我在设计表格中复制了几个按钮。因此,所有按钮都为clicked()
获得了相同的插槽。如何为按钮创建和分配新的个人插槽?
UPD
尝试使用Signals & Slots editor
。它在开始时是空的,我添加了新的:
但如果我right click on button btnInfoCB->go to slot.. clicked()
,它会指向我同样的旧方法。
答案 0 :(得分:0)
Qt创建者将为您创建插槽。从设计师处,右键单击任何按钮,然后选择“转到插槽”选项。选择Clicked()信号按OK。 Qt创建者将导航到您创建的插槽。 Qt自动将按钮点击信号连接到创建的插槽。
您可以对您创建的所有按钮执行相同的操作
答案 1 :(得分:0)
Qt有一个自动连接功能,可以将名为on_UIELEMENTNAME_SIGNALNAME(SIGNAL_PARAMS)
的插槽与ui元素的相应信号连接起来,请参阅文档here
所以要解决这个问题,你有两个选择:
选项1:重命名插槽以使所有名称与.ui文件中的名称相对应:
private slots:
void on_MyFirstBtn_clicked();
void on_MySecondBtn_clicked();
//and so on
或使用选项2:手动连接
private slots:
//notice the prefix "on_" and the suffix "_clicked()" not part of the function name
void MyFirstBtnClicked();
void MySecondBtnClicked();
在类的构造函数中(我将其命名为MyWidget)添加connect调用:
connect(ui->MyFirstBtn, &QPushButton::clicked, this, &MyWidget::MyFirstBtnClicked);
connect(ui->MySecondBtn, &QPushButton::clicked, this, &MyWidget::MySecondBtnClicked);
LE:由于可维护性的原因,我不建议使用UI Designer连接代码中定义的插槽。如果您需要连接已经定义的信号和插槽,例如check / unched以显示/隐藏和其他类似的预定义功能,Designer中的这个功能非常好,但对于您定义的插槽我不喜欢它。
答案 2 :(得分:0)
现有QPushButton / w自动连接的新插槽
您必须先更改QPushButton
的 objectName 。然后右键单击并创建一个新的插槽连接e。 G。 clicked()
。然后Qt Creator将使用新的objectName
e创建一个新的插槽。 G。 void on_newObjectName_clicked() { }
。之后不再使用旧插槽,您将获得新的新功能。
手动连接/ w信号和插槽编辑器
如果您想通过编辑器连接它,首先必须单击QWidget(例如MainWindow)并从菜单中选择更改 signals / slots 。在那里你必须添加一个新功能e。 G。 myNewSlot()
,然后可以在信号和插槽编辑器的下拉菜单中找到,如屏幕截图所示。如果您使用此类连接,则需要在.h
和private slots
文件中的.cpp
声明广告位。对象名称仍然可以链接到自动连接,因此您可能还需要更改objectName或删除自动连接的插槽。