簡體   English   中英

Qt在MainWindow的對象成員中連接SIGNAL和SLOT

[英]Qt Connecting SIGNAL and SLOT in object member of MainWindow

我有一個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,則程序將編譯並啟動,但是隨后在“應用程序輸出”窗格中顯示以下問題:

QObject::connect: No such slot QObject::buttonAction() in ..\MyProject\myclass.cpp:48

我是否必須公開按鈕和插槽並僅在MainWindow類中使用它們? 沒有辦法將其保持在MyClass級別嗎?

謝謝你的幫助!

必須具有從QObject繼承的MyClass ,並在MyClass定義(頭文件)中添加Q_OBJECT宏,才能使插槽/信號起作用。

class MyClass : public QObject
{
     Q_OBJECT

public:
     ....
};

繼承QObject是正確的方法,但是仍然缺少Qt元對象代碼。 您的類的頭文件應如下所示:

#ifndef MYCLASS_H
#define MYCLASS_H

class MyClass : public QObject {
    Q_OBJECT
    // your methods, variables, slots and signals
}

#endif

不要忘記創建moc文件,最簡單的方法是使用qmakeQtCreator IDE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM