【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。

文章目录

  • Ref.

基于 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 界面中进行槽的连接。

首先,切换到 Edit Signals/Slots 界面,如下图所示:
【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第1张图片

然后左键从按钮位置拖动一下,然后放手。就会弹出如下界面:
【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第2张图片

需要自己添加一下编写的函数名字。

【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第3张图片

最后选择确定就行了。

【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第4张图片

完成后的效果如下图所示:

【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第5张图片

至此,已经完成了槽的连接。

不过只要你规范地编写了 GUI.h 文件和 GUI.cpp 文件,哪怕你没有在 GUI.ui 界面进行槽函数的连接,也是可以的。那是因为你编写的函数名字很规范,系统默认进行了关联。也就是执行了以下语句:

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

更详细的解释请参考这两篇文章:VS qt 添加信号槽,vs2019开发Qt5,QAction类的信号转到槽的实现技巧。


发现一个有意思的意外。

我在另一个 Start 按钮中本身已经编写了他的 GUI.h 文件和 GUI.cpp 文件,但是在 GUI.ui 界面没有进行槽函数的连接。首先它是可以正常执行开始功能的。

然后,我在 GUI.ui 界面链接错了槽函数,连接成了 Stop 按钮的功能。然后就发现两个按钮的功能函数都执行了。

不过执行顺序是先 Stop 功能(下图中的 close 提示),再是 Start 功能(下图中的 start 提示)。这应该也能说明槽的连接机制,优先级是更高的。

【Visual Studio】开发 Qt 时右键没有自动添加 slots 槽的功能,使用 C++ 语言,配合 Qt 开发串口通信界面_第6张图片

Ref.

  1. VS qt 添加信号槽
  2. vs2019开发Qt5,QAction类的信号转到槽的实现技巧
  3. Qt信号与槽使用方法最完整总结
  4. QT+VS开发界面入门(qt界面在VS2022实现自动生成槽函数)

你可能感兴趣的:(Visual,Studio,qt,c++)