【Visual Studio】Qt開発時、右ボタンに自動スロット追加機能がない C++言語を使用し、Qtと連携してシリアル通信インターフェースを開発する

知識は単独のものではなく、体系化されたものでなければなりません。私の個人的な概要と関連する経験の詳細については、このコラム「 Visual Studio」を参照してください

このプロジェクトに取り組んでいるときに次のバグに遭遇しました: [Visual Studio] C++ 言語と Qt を使用してシリアル通信インターフェイスを開発しました

記事ディレクトリ

Visual Studio 環境で Qt を使用したところ、右側のボタンにはスロットを自動的に追加する機能がないことがわかり、自分で方法を見つける必要があります。ネット上では複数の方法が紹介されているようなので、私が使用した方法をいくつかまとめてみたいと思います。

たとえば、ボタンにクリック機能を追加するために使用します。

GUI.h次の関数の宣言を追加できます

private slots:
	void on_pushButtonStop_clicked();

GUI.cpp関数の特定の実行関数を次のように追加します。

void GUI::on_pushButtonStop_clicked()
{
    
    
    m_SerialPort.close();
    ui.textBrowserStatus->insertPlainText("Successfully close the serial port!\r\n");
    ui.textBrowserStatus->moveCursor(QTextCursor::End);
}

次に、GUI.uiインターフェイス。

まず、以下の図に示すように、「信号/スロットの編集」インターフェースに切り替えます。
ここに画像の説明を挿入

次に、左クリックしてボタンの位置からドラッグし、放します。次のインターフェイスがポップアップ表示されます。
ここに画像の説明を挿入

自分で書いた関数名を追加する必要があります。

ここに画像の説明を挿入

最後に「OK」を選択します。

ここに画像の説明を挿入

完成した効果を次の図に示します。

ここに画像の説明を挿入

ここまででスロットの接続は完了です。

ただし、GUI.hファイルGUI.cppGUI.uiインターフェース可能です。これは、作成した関数名が非常に標準化されており、システムがデフォルトでそれを関連付けるためです。つまり、次のステートメントが実行されます。

connect(pushButtonStop, SIGNAL(clicked()), this, SLOT (on_pushButtonStop_clicked());

より詳細な説明については、次の 2 つの記事を参照してください: VS qt はシグナル スロットを追加vs2019 は Qt5 を開発、QAction クラスのシグナル転送をスロットに実装するスキル


興味深い驚きを見つけました。

すでに彼のGUI.hファイルGUI.cppが、GUI.uiインターフェイス。まず、起動機能を正常に実行できます。

次に、GUI.uiインターフェイス、それを停止ボタンの機能にリンクしました。すると、2つのボタンの機能が実行されていることが分かりました。

ただし、実行順序は、最初に Stop 関数 (下図の close プロンプト)、次に Start 関数 (下図の start プロンプト) です。これはスロットの接続メカニズムも説明する必要があり、優先度は高くなります。

ここに画像の説明を挿入

参照。

  1. VS qt 信号スロットを追加
  2. Vs2019はQActionクラスのシグナルをスロットに転送する実現技術Qt5を開発
  3. Qt シグナルとスロットの使用方法の最も完全な概要
  4. QT+VS 開発インターフェイスの紹介 (VS2022 でスロット関数の自動生成を実現する QT インターフェイス)

おすすめ

転載: blog.csdn.net/weixin_36815313/article/details/131318916