我有一个 MyClass 类:
- private:
pushButton *button;
void connectSignalAndSlot();
- private slot:
void buttonAction();
我想使用 connectSignalAndSlot() 在 MyClass 中连接这些,如下所示:
void MyClass::connectSignalAndSlot()
{
QObject::connect(button,SIGNAL(clicked()),this,SLOT(buttonAction()));
}
这给了我一个错误
no matching function for call to 'QObject::connect(QPushButton*&, const char*, MyClass* const, const char*)';
如果我用 MyClass 继承 QObject,程序会编译并启动,但我会在“应用程序输出” Pane 中显示以下问题:
QObject::connect: No such slot QObject::buttonAction() in ..\MyProject\myclass.cpp:48
我是否必须公开按钮和插槽并仅在 MainWindow 类中使用它们?有没有办法将其保留在 MyClass 级别?
感谢您的帮助!
最佳答案
您必须让 MyClass
继承自 QObject
并在您的 MyClass
定义(头文件)中添加 Q_OBJECT
宏让插槽/信号工作。
class MyClass : public QObject
{
Q_OBJECT
public:
....
};
关于c++ - Qt在MainWindow的对象成员中连接SIGNAL和SLOT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24982358/