c++ - Qt:自定义插槽不起作用

标签 c++ qt

<分区>

所以我有一个扩展 QWidget 的自定义类。我试过向它添加一个自定义插槽。但是它一直给我错误:

"QObject::connect: No such slot QWidget::closeSlot() in ..\menuTest\menu.cpp:13".

我的代码是:

#include "menu.h"

Menu::Menu()
{
    exitButton = new QPushButton;
    exitButton->setText(tr("Exit"));

    connect(exitButton, SIGNAL(clicked()), this, SLOT(closeSlot()));

    QVBoxLayout * layout = new QVBoxLayout;
    layout->addWidget(exitButton);
    this->setLayout(layout);
}

void Menu::closeSlot()
{
    qDebug() << "I'm inside";
}

和头文件:

#ifndef MENU_H
#define MENU_H

#include "allIncludes.h"

class Menu : public QWidget
{
public:
    Menu();

private:
QPushButton * exitButton;

private slots:
    void closeSlot();
};

#endif // MENU_H

最佳答案

要被 Qt 的元对象系统识别的类,它必须包含 Q_OBJECT 宏:

class Menu : public QWidget
{
    Q_OBJECT
public:
    Menu();

private:
QPushButton * exitButton;

private slots:
    void closeSlot();
};

关于c++ - Qt:自定义插槽不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24188146/

相关文章:

c++ - 你如何强制模板匹配基类?

C++ 什么是 NULL 指针值?

c++ - new 和 delete char* 导致异常

c++ - Qt 删除 QVBoxLayout 上的小部件之间的空白区域

c++ - 如何在子部件而不是父部件上画一条线?

c++ - 在 Qt 项目中禁用 -Wall 编译器警告?

c++ - 主要的两个问题

c++ - 用 C++ 对数字进行排序

c++ - 在 Qt 中更改语言环境

c++ - 在 QGraphisItem 中移动子项目