問題タブ [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.
qt - メインのループによってブロックされたQtシグナルとスロットメカニズム
次のような状況があります。
- ループ内のメインで2 つ
Socket
のオブジェクトが作成されます (元の問題には 1000 個のオブジェクトがあります)。作成時にメソッドが呼び出されます。for
start()
start()
QTcpSocket
ホストに接続しようとする を作成します。Socket
connected()
QTcpSocket からのシグナルをキャッチし、デバッグ出力を出力するスロットがあります。
時系列で最初にすべてのSocket
オブジェクトが作成され、その後ソケットが開始されます。デバッグ オプションの出力例を次に示します。
コード:
ドキュメントに次のように記載されているため、これは私が期待した動作ではありません。
シグナルが発行されると、それに接続されているスロットは、通常の関数呼び出しと同じように、通常すぐに実行されます。これが発生すると、シグナルとスロットのメカニズムは、GUI イベント ループから完全に独立します。
質問:
シグナルが送信されたときにスロットが「すぐに」(メインのループが終了した後だけでなく) 実行されるようにするにはどうすればよいですか?
私が現在見ている唯一の解決策(新しいスレッドを導入せずに):
この場合、シグナルとスロットの使用をやめ、すべてをstart
メソッドに実装します。このようなもの:
c++ - QObject接続機能
他の同様の質問を確認して解決策を試しましたが、うまくいきません。
基本的に、投稿リクエストのみを行うhttpクライアントを作成しようとしています。これを行うには、QNetworkManager
の終了信号を何らかのコールバック スロットに接続する必要があります。
これが私のコードです。
h ファイル:
cpp ファイル:
ご覧のとおり、スロットは確実に存在し、ヘッダー ファイルのパブリック スロットの下で宣言されています。だから、なぜこれが起こっているのか分かりません。私はすでにクリーンアップ、qmake の実行、および再構築を試みました。
エラーメッセージは次のとおりです。
"QObject::connect: No such slot QObject::finishedSlot(QNetworkReply *)"
何か案が?
c++ - 基本クラスから継承されたシグナルによって Qt UI スロットが呼び出されない
私はばかげた問題に出くわしています.Qtは初めてです。
基本クラス ( BaseSampler )からシグナルを継承するクラス ( SoundSampler )があり、このシグナルは UI コンストラクター ( MainWindow ) で UI のスロット ( sampleAvailable() ) に接続されます。
問題:
接続が適切に行われたとしても ( UI クラスでconnect()が true を返し、 SoundSamplerクラスでisSignalconnectedも true を返す)、スロットが呼び出されることはありません。................................................................... ................................................
これが私のコードです(要点に合わせてトリミングされています):
ベースサンプラー
サウンドサンプラー
................................................................... ................................................
メインウィンドウ
................................................................... ................................................
c++ - Qt:シグナルが発行されたときにシグナルハンドラが呼び出されない
私はこのようなことをしています:
SIGNAL がいつトリガーされるかについての提案は、SLOT が呼び出されません。メニューが表示される場所は次のとおりです。
SLOT が呼び出されない理由について何か提案はありますか?
c++ - Qt: QObject::connect で複数の接続タイプを指定する
複数の接続タイプを指定できるかどうか知りたかったのです。たとえば、接続タイプをキュー接続と一意の接続にしたいと考えています。1つのステートメントでそれを指定することは可能ですか?
アップデート :
ポスターの提案に従って:
使用してみ Qt::QueuedConnection | Qt::UniqueConnection
ましたが、得られます
c++ - QPushButton の使用法
私のアプリケーションには2つのボタンと1つの関数があり、特定のボタンをクリックすると特定のパラメーターを取り、その値で実行され、別のボタンをクリックすると関数は別のパラメーターを取り実行します。これらはすべて動的に行われます。機能とボタンは別のクラスです。
どこで信号を発する必要がありますか? そして、それをオーバーライドする方法は?
c++ - Qt が私のスロットを認識しないのはなぜですか?
次のコードを使用して、コンテキスト メニューをツリーに追加しようとしています。
ただし、これを実行すると、次のエラーが発生します。
私は何を間違っていますか?