获得QT代码的普通C++实现

use*_*534 4 c++ qt signals

我试图弄清楚这个代码如何在普通的C++中没有任何依赖性,所以我使用moc编译器,但显然我错了.

moc总是返回

main.cpp:0: Note: No relevant classes found. No output generated.
Run Code Online (Sandbox Code Playgroud)

代码是

#include <QApplication>
#include <QWidget>
#include <QPushButton>

class MyButton : public QWidget
{
 public:
     MyButton(QWidget *parent = 0);
};

MyButton::MyButton(QWidget *parent)
    : QWidget(parent)
{   
  QPushButton *quit = new QPushButton("Quit", this);
  quit->setGeometry(50, 40, 75, 30);

  connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}


int main(int argc, char *argv[])
{
  QApplication app(argc, argv);  

  MyButton window;

  window.resize(250, 150);
  window.move(300, 300);
  window.setWindowTitle("button");
  window.show();

  return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

来自http://www.zetcode.com/gui/qt4/firstprograms/

总的来说,我有兴趣使用C++标准库创建我自己的信号槽系统(没有增强信号,没有QT,没有别的)所以我这样做是出于研究目的,我只对基础设施感兴趣关于信号和插槽.

谢谢.

jte*_*epe 7

Q_OBJECT宏添加到类的私有部分,因此moc将其转换.

class MyButton : public QWidget
{
 Q_OBJECT
 public:
     MyButton(QWidget *parent = 0);
};
Run Code Online (Sandbox Code Playgroud)

是文档所说的内容.