QComboBox Qt Creator信号插槽永远不会启动

QComboBox Qt Creator signals slots never fire

本文关键字:启动 永远 插槽 Qt Creator 信号 QComboBox      更新时间:2023-10-16

我有一个非常简单的Qt窗口,其中包含组合框,我试图用Qt Creator为这个组合框创建信号槽。我试过activatedcurrentIndexChangedcurrentTextChanged,都没用。原因可能是什么?同一窗口上的其他信号(按钮点击、菜单项点击)正常启动。操作系统是Windows 7。

当您在Qt Designer中在Form(如QMainWindow Form)上创建槽时,如果右键单击并单击Go to slot...,它会使用命名约定根据槽的名称自动将ui表单元素连接到槽。

创建这些窗之后,您可以将对象名称更改为其他名称。

就像将comboBox1改为myComboBox一样,它会破坏自动连接的ui表单元素,因为名称不同。

http://doc.qt.io/qt-5/designer-using-a-ui-file.html#automatic-连接

具有自动连接功能的小工具和对话框

尽管在对话框和在构造函数中连接它,我们可以使用QMetaObject的连接OK按钮的clicked()信号的自动连接设施到我们子类中的一个插槽。uic在对话框的setupUi()函数,所以我们只需要声明和使用符合标准约定的名称实现插槽:

void on_<object name>_<signal name>(<signal parameters>);

这就是你的组合框开始无法连接的最可能原因。

如果不是这样的话,当基于命名的显式连接调用失败时,您可以看到它们的输出:

QObject::connect(ui->comboBox, SIGNAL(misspelled_signal()), this, SLOT(non_existent_slot()));

在运行时,您将在Application Output选项卡中获得非常有用的输出,以帮助诊断错误。

希望能帮上忙。