QComboBox未触发

时间:2018-05-24 14:16:47

标签: c++ qt qt-designer qcombobox

我有这个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(){};

(代码)

1 个答案:

答案 0 :(得分:0)

您的评论“没有这样的插槽QtGuiApplication :: on_comboBox_event(int)”表明QtGuiApplication的头文件没有将此成员函数声明为插槽,它应如下所示:

class QtGuiApplication: public ...
{
    Q_OBJECT
...
public slots:
    void on_comboBox_event(int);
...
}

Qt使用名为moc.exe的工具来解析头文件,这会生成用于插槽查找的代码。在您的情况下,由于缺少声明,可能找不到插槽。