我有一个非常简单的Qt窗口,其中包含组合框,我尝试使用Qt Creator为这个组合框创建信号槽。我尝试了activated
,currentIndexChanged
,currentTextChanged
,没有任何作用。
可能是什么原因?
在同一窗口上的其他信号(按钮单击,菜单项单击)正常启动。操作系统是Windows 7。
答案 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
选项卡中获得非常有用的输出,以帮助诊断错误。
希望有帮助。