知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏: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 界面,如下图所示:
然后左键从按钮位置拖动一下,然后放手。就会弹出如下界面:
需要自己添加一下编写的函数名字。
最后选择确定就行了。
完成后的效果如下图所示:
至此,已经完成了槽的连接。
不过只要你规范地编写了 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 提示)。这应该也能说明槽的连接机制,优先级是更高的。
Ref.
- VS qt 添加信号槽
- vs2019开发Qt5,QAction类的信号转到槽的实现技巧
- Qt信号与槽使用方法最完整总结
- QT+VS开发界面入门(qt界面在VS2022实现自动生成槽函数)