我有这个listWidget,显示一个狗列表(名称 - 品种)。 我有这个comboBox应该让我选择显示短版本(只是名称 - 品种)或详细版本(名称 - 品种 - 年龄 - 重量 - 照片)。 出于某种原因,我的comboBox没有做任何事情,即使我的连接没有给我任何错误。 这就是我实现它的方式:
QObject::connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_comboBox_event(int)));
void QtGuiApplication::on_comboBox_event(int selection)
{
switch (selection) {
case 0:
this->populateDogsList();
break;
case 1:
this->populateDogsListDetailed();
break;
}
}
我做错了什么?请帮助我,我到处寻找:/谢谢。 PS。我的填充列表方法单独工作,我甚至无法调试它,因为它没有进入comboBox事件方法。
类定义:(标题) class QtGuiApplication:public QMainWindow { Q_OBJECT
公共: QtGuiApplication(Controller& ctrl,QWidget * parent = Q_NULLPTR); ~QtGuiApplication(){};
(代码)
答案 0 :(得分:0)
您的评论“没有这样的插槽QtGuiApplication :: on_comboBox_event(int)”表明QtGuiApplication的头文件没有将此成员函数声明为插槽,它应如下所示:
class QtGuiApplication: public ...
{
Q_OBJECT
...
public slots:
void on_comboBox_event(int);
...
}
Qt使用名为moc.exe的工具来解析头文件,这会生成用于插槽查找的代码。在您的情况下,由于缺少声明,可能找不到插槽。