想要使得信号和槽自动关联,省去自己写connect函数需要以下这么做:
- 规定的格式写槽函数,函数名格式:字符串on、部件的objectName和信号名称3部分。中间用下划线隔开,例如pushButton的按下槽:on_pushButton_clicked()。
- 使用这个槽且定义槽的类(包含相关的头文件,如<QPushButton>),构造函数中添加
Mainwindow::Mainwindow(QObject *parent = nullptr)
{
QPushButton *button = new QPushButton(this);
button->setObjectName("myButton")
ui->setUi(this);
}
这里需要注意的是:设置自动关联的部件一定写在ui->setUi(this);之前,因为setUi()函数中调用了connectSlotsByName()函数,这个函数的作用就是用来自动关联的。(这也是自动关联简单,但是使用的少的原因)
如果牵涉到多个信号到一个槽的情况,则需要使用QSignalMapper类进行信号映射。