QT信号和插槽问题:“没有这样的插槽”与保护信号有关吗?

时间:2018-01-09 07:41:00

标签: c++ qt4 signals-slots qt-signals kdevelop

我试图将信号QListWidget->itemChanged连接到名为checkItemChanged的自定义插槽。我在this question中要求正确的语法。 我使用QT4所以我使用如下的旧字符串语法来连接信号和插槽:

connect(listWidget, SIGNAL(itemChanged(QListWidgetItem*)), this , SLOT(checkItemChanged(QListWidgetItem*)));

此连接语法在名为mainWindow.cpp的文件中声明,其头文件mainWindow.h如下所示:

class mainWindow : public QWidget
{
    Q_OBJECT

public:
    mainWindow ( QWidget *parent=0, const char *name=0 );

public slots:
    void checkItemChanged(QListWidgetItem*);

我还在mainWindow.cpp中定义了我的插槽实现,如下所示:

void mainWindow::checkItemChanged(QListWidgetItem* item)
{
  if (item->checkState()==true){

    qDebug()<<"Item: "<<item->text()<<"Checked";
  }else{
    qDebug()<<"Item: "<<item->text()<<"UnChecked";
  }
}

所以它使用宏Q_OBJECT作为answered here作为no such slot错误的常见原因。

我在 KDevelop IDE 中运行我的项目,因此它将自动生成.moc文件并按this answer中的要求运行qmake 但是我仍然面临如下错误:

Object::connect: No such slot mainWindow::checkItemChanged(QListWidgetItem*) in /home/part/Desktop/project/P/src/gui/mainWindow.cpp:320

我知道这很奇怪,但我想知道它可能与QListWidget->itemChanged受到保护的事实有关吗?或者还有一些我错过的东西?

0 个答案:

没有答案