c++ - Qt在MainWindow的对象成员中连接SIGNAL和SLOT

标签 c++ qt signals-slots

我有一个 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/

相关文章:

c++ - 如何将 Qt 信号/槽名称存储到数据结构中?

c++ - Qt:c++ 信号到 qml 连接

c++将数据写入文件而不重复

Emacs 中的 C++ 关键字未着色

c++ - 在同一个文件中实现多个窗口的功能?

c++ - 在 Qt 中使用第三方 dll(没有可用的 .lib 文件)

Qt:如何正确定义此代码的信号参数?

c++ - 如何在 QGraphicsRectItem 中实现信号槽?子类化 qobject 和 qgraphicsrectitem 但出现错误

c++ - mach_header 64 位和 __PAGEZERO 段 64 位

c++ - 将原始类型指针转换为结构指针 - 对齐和填充?