Q_OBJECT

新建类中,若要自己定义槽函数,出现了CAN

官方指南如下:

The Q_OBJECT macro must appear in the private section of a class definition that declares its own signals and slots or that uses other services provided by Qt‘s meta-object system.

所以,如果要定义自己的槽函数,必须要定义类的时候,加上Q_OBJECT宏定义,问题不再出现。

时间: 2024-07-30 13:50:41

Q_OBJECT的相关文章

气死人不偿命,Q_OBJECT导致的C++报错,而且还看不明白

为了代码可以同时适应VC++和MingW编译器,我改动了我的代码,变成: #ifdef _MSC_VER #pragma comment(lib, "crypt32.lib") // Link OK,Linux 也要附带这两个库,格式是 -lcrypt32 -lws2_32 #pragma comment(lib, "ws2_32.lib") // Link OK //#pragma comment(lib, "dnsapi.lib") // 没

Quest for sane signals in Qt - step 1 (hand coding a Q_OBJECT)

探索qt的信号ref: http://crazyeddiecpp.blogspot.hk/2011/01/quest-for-sane-signals-in-qt-step-1.html If it wasn't for the particular implementation of signals that Qt has, it would be a quite wonderful library. So much about it has been made very easy in co

cmake+qt+qtcreator的配置,解决Q_OBJECT的问题

1.如果在编译qt项目的时候,一般头文件里都有Q_OBJECT,但是用cmake来编译的时候,就会报错,那么怎么解决呢? 解决的办法就是要在cmake里面写好配置 命令,再编译的时候,就不会报错了,写法如下: project(cmakeandqt) cmake_minimum_required(VERSION 2.8) #add qt FIND_PACKAGE(Qt4 REQUIRED) set(QT_USE_QTMAIN TRUE) INCLUDE(${QT_USE_FILE}) includ

error : Class declarations lacks Q_OBJECT macro

直译是:类声明没有Q_OBJECT 宏. class CError1 : public QObject { signals: void OnButClicked(); }; class CError2 : public QObject { signals: void OnButClicked(); }; class CError1 : public QObject { Q_OBJECT signals: void OnButClicked(); }; 类声明加上Q_OBJECT就好了. clas

QWidget窗体中使用Q_OBJECT后无法添加背景图片或背景色

在继承自QWiget的窗体中,设置背景图片或背景色比较简单的方法是使用setStyleSheet()函数,比如在构造函数中可以这样来设置背景图片: this->setStyleSheet("border-image: url(:/background.jpg)"); 但是如果窗体类中使用了Q_OBJECT,则这种方法没有效果,解决办法是使用setAttribute()函数,如下: this->setAttribute(Qt::WA_StyledBackground); th

Qt5 在添加 Q_OBJECT 后发现编译出错的原因

在 Qt 编写过程中,如多线程使用信号槽时,需要添加 Q_OBJECT,但是在添加之后发现编译老会出错.如下: class ThreadSxxx : public QThread { Q_OBJECT public: ThreadSxxx(); signals: signal_trig(); } 编译后提示 undefined reference to vtable for "xxxx" 的错误问题. 出现该错误的原因是此时的 Q_OBJECT 是半途加入的,我们需要让项目重新加载编译

Qt类声明中Q_OBJECT的作用与报错解决

2017-06-22 周四 大雨 北京 院里 新建作图类,继承自QCUstomPlot类 因为需要同时作8张图,都要单坐标缩放的功能,因此想干脆新建一个类,继承自QCUstomPlot,把需要的功能都加上.类名取为QCUstomPlotPlus,最终成功版类代码如下: //声明.explicit是为了禁止隐式转换. class QCustomPlotPlus : public QCustomPlot { Q_OBJECT //重要! public: explicit QCustomPlotPlu

Q_OBJECT信号槽与继承关系fZ1

一.问题说明对象子类化过程中,或者新添加的类对象,当你需要使用信号槽机制的时候,那么,你就必须加上宏变量:问题来了,你的这个类就必须继承与类,同时集成于你的积累,如或者.那么,又有新的问题,继承关系必须拟清楚,集成于,继承于.例子:,二.问题分析解决上面就显得多余,而且继承关系错乱.三.问题深度剖析.纵使需要当前类继承类,但是类是继承的,继承,所以这里只需要继承就可以了,简单易读..同时,使用,你还必须重新,并且..当你的父类(自己实现的父类),有一个继承的子类,父类又有自己写的虚拟函数,那么子

Qt线程的简单使用(一)

Qt中线程的一种创建方式,就是使用QObject::moveToThread()函数.如下,直接上源代码,可以把费时的任务放到doWork()方法里进行,不阻塞主线程. 1 #ifndef WORKER_H 2 #define WORKER_H 3 4 #include <QObject> 5 6 class Worker : public QObject 7 { 8 Q_OBJECT 9 10 public: 11 Worker(); 12 ~Worker(); 13 public slot