問題タブ [qt-signals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Qtの多重継承とシグナル
QObjectが原因で、複数の継承に関してQTに問題があります。他の多くの人が同じ問題を抱えていることは知っていますが、どうすれば修正できるかわかりません。
私がこれをするとき
エラーが発生します:
QObject'は'MainMenuOption'のあいまいなベースです
シグナルのためにNavigatableItemをQObjectから継承させた理由。これを行う方法はありますか?
編集:
各継承宣言に仮想を追加しても、同じエラーが発生します。
「すべてをクリーンアップ」した後でも、「qmakeを実行」および「すべてをビルド」します。
c++ - QObjectから派生せずにSIGNALとSLOTを使用するにはどうすればよいですか?
または、質問を定式化する他の方法(問題は解決しませんでしたが):'QObject :: QObject'は、クラス'QObject'で宣言されたプライベートメンバーにアクセスできません
クラスにSIGNALsとSLOTSの機能が必要ですが、QObject
?から派生しないと不可能だと思います。
問題は、信号とスロットを使用するために派生する必要があることのようQObject
です...しかし、デフォルトのコンストラクターが必要ですMyClass
。しかし、次の機能のためにそれらを構築できませんQObject
:
コピーコンストラクターまたは代入演算子がありません。
たくさんやってみました...
だから私のshoulクラスはそのように見えます:
のデフォルトのコンストラクタが必要ですMyClass
。
それで、「'QObject :: QObject'はクラス'QObject'で宣言されたプライベートメンバーにアクセスできません」エラーを回避する可能性はありますか?
または、代わりに、信号とスロットを使用せずに使用する可能性はありますQObject
か?
アドバイスをいただければ幸いです。
python - PySide シグナルの「複製」動作
出力:
"Loaded" は 1 回だけ出力されます (予想どおり、クラス変数です) が、シグナルの 2 つのインスタンスが作成されるのはなぜですか (クラス変数でもある場合)。
c++ - Qt Custom Slots
Why doesn't the slot Reset() work? I want the button "reset" to reset the value of the sider to zero.
multithreading - Perl Qt 3.1 とスレッド
Qt::Object であり、スレッドを作成するメソッドを持つクラスがあります。
スレッドを切断または結合しようとすると、セグメント障害が発生します。
また、放出信号が機能していません。
サンプルコードは次のとおりです。
私が得るエラーは次のようなものです:
存在しない共有文字列 '39631808' を解放しようとしています。Perl インタープリター: 0x2879910。
[1] セグメンテーション違反
c++ - Qt スレッドを使用した混乱
したがって、正しく理解できれば、FunctionsClass
QObject を継承するクラスがあり、次のようにして呼び出した Qthread にそのクラスを設定したとFunctionClassThread
します。
私が理解していることから、スレッドをセットアップするこの方法は、のスロットの実行のみを処理します。つまり、何らかの理由でスロットに無限ループがある場合、FunctionsClass
実行中のスレッドFunctionsClass
がブロックされる可能性があります。FunctionsClass
私の質問は次のとおりです。スロットだけでなく、スレッドで FunctionsClass の関数を実行するにはどうすればよいですか? オブジェクト全体 (関数、メンバー変数など) をスレッドに配置して、そのオブジェクト全体からのコード/データのみを実行する方法はありますか? そして、スレッドがスロットの実行をどのように処理するかについての私の理解は正しいですか?
qt - QTableView、QStandardItemModelおよびSignals
私は、を持ってQTableView
いQStandardItemModel
ます。
私はネットワークを介してモデルを頻繁に更新し、モデルはユーザーが直接経由して更新することもありQTableView
ます。
ここで、ユーザーがデータを変更しているときにメソッドを呼び出すのが好きなので、次のようにしました。
問題はdataChanged
、アイテムがネットワーク経由で更新されたときにも、私のメソッドが呼び出されることです。
QTableview
ユーザーが???内で何かを変更している場合にのみ発行される別の信号はありますか?
c++ - セット内の 1 つのオブジェクトにシグナルを動的に送信する
単一のエミッター オブジェクトと一連のレシーバーがある状況があります。レシーバーは同じクラスであり、実際には同じタイプのデバイスのセットを表します。Qt フレームワークを使用しています。
エミッタ自体は、最初にデバイスの 1 つから情報を要求する信号を取得します。
対応するスロットで、エミッターはどのレシーバーが「準備ができている」かを確認し、独自の信号を送信してデバイスの 1 つ (最初に準備ができている方) にデータを要求する必要があります。
Emitter はミリ秒単位で非常に高速に信号を受信します。デバイスの 1 つだけから安全にデータを要求する方法を 3 つ考えることができます (デバイスは独自のスレッドに存在するため、スレッドセーフなメカニズムが必要です)。デバイスの数は静的ではなく、変更される可能性があります。デバイスの総数は非常に少ないです (間違いなく 5 ~ 6 未満)。
1) 追加または削除されたすべてのデバイスに接続します。1 つの要求を発行し、デバイス オブジェクト自体に、特定のデバイス タグを使用して、その要求がそれらに対するものであるかどうかをフィルター処理します。チェックが行われる要求スロットは専用スレッドのコンテキストで実行されるため、この方法は便利ですが、デバイスの数が増えると無駄になります。
2) リクエストを送信する必要がある場合、オンザフライでエミッタ内のオブジェクトに接続および切断します。
3) リクエストを送信する必要がある場合は、QMetaObject::invokeMethod() を使用します。
パフォーマンスは重要です。どの方法が「最良」であるか、またはより良い方法があるかどうかを知っている人はいますか?
よろしく
プリス
注: 明確にするために: エミッターはアプリケーションから信号を取得し、デバイスにクエリを実行して情報を取得します。クレイジー ASCII アート ゴー:
(アプリ)<---->(エミッター)<------>(レシーバー)<--|-->物理デバイス
python - PyQt で QPushButton からテキストを取得する
QtGui.QPushButton オブジェクトのリストから単純なキーボードを作成しようとしています。
False
問題は、キーの代わりにラムダが返されることです。私は何を間違っていますか?
qt - Qt シグナル/スロット接続が機能しない
メソッドに非常に奇妙な問題がありQObject::connect
ます。まず、この非常に単純なコードを見てください。
のオブジェクトは、 のオブジェクトから発信された信号に応答しA
ませんB
。期待通りに信号が発信されていると確信しています。成功を示すメソッドのQObject::connect
戻り値。qmake、moctrue
を実行しましたが、moc_ .cpp* ファイルは正しいようです。
どこで間違えたのだろうか?
編集I:
ここに私が取り組んでいるコードがあります。関連する部分だけが表示されるように削除されています:
自分自身を親として渡し、適切なオブジェクトを提供するサブクラス内に新しいListController
オブジェクトを作成します。QWidget
Model
編集Ⅱ
オブジェクトをメイン ウィジェットに返しListController
ます。CompositeView
メイン ウィジェットは、複合ビューをそのレイアウトに追加します。この時点で、CompositeView
とその子の親が変更されます。これが問題の原因である可能性があります。