c++ - 获取 QT 代码的纯 C++ 实现

标签 c++ qt signals

我试图弄清楚这段代码在没有任何依赖性的情况下如何像普通 C++ 一样,所以我使用了 moc 编译器,但显然我错了。

moc 总是返回

main.cpp:0: Note: No relevant classes found. No output generated.

代码是

#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();
}

from http://www.zetcode.com/gui/qt4/firstprograms/

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

谢谢。

最佳答案

Q_OBJECT 宏添加到类的私有(private)部分,以便moc 转换它。

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

Here文档是这么说的。

关于c++ - 获取 QT 代码的纯 C++ 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13844206/

相关文章:

Django 信号 m2m_changed 未触发

c - SIGQUIT 和 STDIN(读取函数的意外转储)

c - 信号处理程序中的 pgid 与真实 pgid 不同

c++ - 如何在 Mac 上使用 C++ 访问 ascii 中的框绘图字符

c++ - ostream插入运算符与其非成员重载的关系

c++ - 强制 QMediaPlayer 为视频擦洗应用程序准确更新位置?

java - 切换到新的qt和Gradle后不调用native方法

c++ - `if constexpr` 的 issue with non-placement new

c++ - -fPIC 仅适用于共享库吗?

android - Qt for Android 错误 : Target id 'android--1' is not valid