問題タブ [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.

0 投票する
3 に答える
7105 参照

c++ - Qtの多重継承とシグナル

QObjectが原因で、複数の継承に関してQTに問題があります。他の多くの人が同じ問題を抱えていることは知っていますが、どうすれば修正できるかわかりません。

私がこれをするとき

エラーが発生します:

QObject'は'MainMenuOption'のあいまいなベースです

シグナルのためにNavigatableItemをQObjectから継承させた理由。これを行う方法はありますか?

編集:

各継承宣言に仮想を追加しても、同じエラーが発生します。

「すべてをクリーンアップ」した後でも、「qmakeを実行」および「すべてをビルド」します。

0 投票する
6 に答える
20840 参照

c++ - QObjectから派生せずにSIGNALとSLOTを使用するにはどうすればよいですか?

または、質問を定式化する他の方法(問題は解決しませんでしたが):'QObject :: QObject'は、クラス'QObject'で宣言されたプライベートメンバーにアクセスできません

クラスにSIGNALsとSLOTSの機能が必要ですが、QObject?から派生しないと不可能だと思います。

問題は、信号とスロットを使用するために派生する必要があることのようQObjectです...しかし、デフォルトのコンストラクターが必要ですMyClass。しかし、次の機能のためにそれらを構築できませんQObjectコピーコンストラクターまたは代入演算子がありません。

たくさんやってみました...

だから私のshoulクラスはそのように見えます:

のデフォルトのコンストラクタが必要ですMyClass

それで、「'QObject :: QObject'はクラス'QObject'で宣言されたプライベートメンバーにアクセスできません」エラーを回避する可能性はありますか?

または、代わりに、信号とスロットを使用せずに使用する可能性はありますQObjectか?

アドバイスをいただければ幸いです。

0 投票する
1 に答える
383 参照

python - PySide シグナルの「複製」動作

出力:

"Loaded" は 1 回だけ出力されます (予想どおり、クラス変数です) が、シグナルの 2 つのインスタンスが作成されるのはなぜですか (クラス変数でもある場合)。

0 投票する
1 に答える
2083 参照

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.

0 投票する
1 に答える
232 参照

multithreading - Perl Qt 3.1 とスレッド

Qt::Object であり、スレッドを作成するメソッドを持つクラスがあります。

スレッドを切断または結合しようとすると、セグメント障害が発生します。

また、放出信号が機能していません。

サンプルコードは次のとおりです。


私が得るエラーは次のようなものです:

存在しない共有文字列 '39631808' を解放しようとしています。Perl インタープリター: 0x2879910。

[1] セグメンテーション違反

0 投票する
2 に答える
204 参照

c++ - Qt スレッドを使用した混乱

したがって、正しく理解できれば、FunctionsClassQObject を継承するクラスがあり、次のようにして呼び出した Qthread にそのクラスを設定したとFunctionClassThreadします。

私が理解していることから、スレッドをセットアップするこの方法は、のスロットの実行のみを処理します。つまり、何らかの理由でスロットに無限ループがある場合、FunctionsClass実行中のスレッドFunctionsClassがブロックされる可能性があります。FunctionsClass

私の質問は次のとおりです。スロットだけでなく、スレッドで FunctionsClass の関数を実行するにはどうすればよいですか? オブジェクト全体 (関数、メンバー変数など) をスレッドに配置して、そのオブジェクト全体からのコード/データのみを実行する方法はありますか? そして、スレッドがスロットの実行をどのように処理するかについての私の理解は正しいですか?

0 投票する
2 に答える
5903 参照

qt - QTableView、QStandardItemModelおよびSignals

私は、を持ってQTableViewQStandardItemModelます。
私はネットワークを介してモデルを頻繁に更新し、モデルはユーザーが直接経由して更新することもありQTableViewます。

ここで、ユーザーがデータを変更しているときにメソッドを呼び出すのが好きなので、次のようにしました。

問題はdataChanged、アイテムがネットワーク経由で更新されたときにも、私のメソッドが呼び出されることです。

QTableviewユーザーが???内で何かを変更している場合にのみ発行される別の信号はありますか?

0 投票する
2 に答える
275 参照

c++ - セット内の 1 つのオブジェクトにシグナルを動的に送信する

単一のエミッター オブジェクトと一連のレシーバーがある状況があります。レシーバーは同じクラスであり、実際には同じタイプのデバイスのセットを表します。Qt フレームワークを使用しています。

  • エミッタ自体は、最初にデバイスの 1 つから情報を要求する信号を取得します。

  • 対応するスロットで、エミッターはどのレシーバーが「準備ができている」かを確認し、独自の信号を送信してデバイスの 1 つ (最初に準備ができている方) にデータを要求する必要があります。

Emitter はミリ秒単位で非常に高速に信号を受信します。デバイスの 1 つだけから安全にデータを要求する方法を 3 つ考えることができます (デバイスは独自のスレッドに存在するため、スレッドセーフなメカニズムが必要です)。デバイスの数は静的ではなく、変更される可能性があります。デバイスの総数は非常に少ないです (間違いなく 5 ~ 6 未満)。

1) 追加または削除されたすべてのデバイスに接続します。1 つの要求を発行し、デバイス オブジェクト自体に、特定のデバイス タグを使用して、その要求がそれらに対するものであるかどうかをフィルター処理します。チェックが行われる要求スロットは専用スレッドのコンテキストで実行されるため、この方法は便利ですが、デバイスの数が増えると無駄になります。

2) リクエストを送信する必要がある場合、オンザフライでエミッタ内のオブジェクトに接続および切断します。

3) リクエストを送信する必要がある場合は、QMetaObject::invokeMethod() を使用します。

パフォーマンスは重要です。どの方法が「最良」であるか、またはより良い方法があるかどうかを知っている人はいますか?

よろしく

プリス

注: 明確にするために: エミッターはアプリケーションから信号を取得し、デバイスにクエリを実行して情報を取得します。クレイジー ASCII アート ゴー:

(アプリ)<---->(エミッター)<------>(レシーバー)<--|-->物理デバイス

0 投票する
2 に答える
4883 参照

python - PyQt で QPushButton からテキストを取得する

QtGui.QPushButton オブジェクトのリストから単純なキーボードを作成しようとしています。

False問題は、キーの代わりにラムダが返されることです。私は何を間違っていますか?

0 投票する
2 に答える
6306 参照

qt - Qt シグナル/スロット接続が機能しない

メソッドに非常に奇妙な問題がありQObject::connectます。まず、この非常に単純なコードを見てください。

のオブジェクトは、 のオブジェクトから発信された信号に応答しA ませんB。期待通りに信号が発信されていると確信しています。成功を示すメソッドのQObject::connect戻り値。qmakemoctrueを実行しましたが、moc_ .cpp* ファイルは正しいようです。

どこで間違えたのだろうか?

編集I:

ここに私が取り組んでいるコードがあります。関連する部分だけが表示されるように削除されています:

自分自身を親として渡し、適切なオブジェクトを提供するサブクラス内に新しいListControllerオブジェクトを作成します。QWidgetModel

編集Ⅱ

オブジェクトをメイン ウィジェットに返しListControllerます。CompositeViewメイン ウィジェットは、複合ビューをそのレイアウトに追加します。この時点で、CompositeViewとその子の親が変更されます。これが問題の原因である可能性があります。