QComboBox Qt Creator信号槽永不发射

时间:2015-02-18 10:29:03

标签: c++ qt qt-creator

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

1 个答案:

答案 0 :(得分:0)

在Qt Designer中创建插槽时,在表单上创建插槽,如QMainWindow表单,如果右键单击Go to slot...,它会使用命名约定自动将ui表单元素连接到基于插槽的插槽他们的名字。

创建这些插槽后,您可以将对象名称更改为其他内容。

而不是comboBox1,而是将其更改为myComboBox,它会破坏自动连接的ui表单元素,因为名称不同。

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

  

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

     

虽然在对话框中实现自定义插槽很容易   在构造函数中连接它,我们可以改为使用QMetaObject' s   自动连接工具,用于连接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选项卡中获得非常有用的输出,以帮助诊断错误。

希望有帮助。