自定义类的Q_OBJECT使用
在下通过QT Creat建立了一个只有一个mainwindow界面的工程。之后,在该工程的.h文件中添加自定义类。
.h文件全文如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
class MyEditline :public QObject
{
Q_OBJECT
public:
explicit MyEditline(QObject *parent=0);
~MyEditline();
protected:
virtual void keyPressEvent ( QKeyEvent *);
virtual void keyReleaseEvent ( QKeyEvent *);
signals:
};
#endif // MAINWINDOW_H
但是链接时出现debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MyEditline[vtable for MyEditline]+0x14): undefined reference to `MyEditline::~MyEditline()'
错误。
之后根据网上的资料,将工程目录下的所有makefile文件全部删除,XX-build-desktop文件夹也删除。
再运行qmake -project之后重新编译,还是同样的错误。
望哪位大侠不惜赐教
360度跪谢!
.h文件全文如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
class MyEditline :public QObject
{
Q_OBJECT
public:
explicit MyEditline(QObject *parent=0);
~MyEditline();
protected:
virtual void keyPressEvent ( QKeyEvent *);
virtual void keyReleaseEvent ( QKeyEvent *);
signals:
};
#endif // MAINWINDOW_H
但是链接时出现debug/moc_mainwindow.o:moc_mainwindow.cpp:(.rdata$_ZTV10MyEditline[vtable for MyEditline]+0x14): undefined reference to `MyEditline::~MyEditline()'
错误。
之后根据网上的资料,将工程目录下的所有makefile文件全部删除,XX-build-desktop文件夹也删除。
再运行qmake -project之后重新编译,还是同样的错误。
望哪位大侠不惜赐教
360度跪谢!
...全文
相关推荐
C++传递自定义类型作为参数到Qml
这个类通常会继承`QObject`,并使用`Q_PROPERTY`声明自定义类型的属性:```cpp// DataVM.hclass DataVM : public QObject { Q_OBJECT
QtObjectTree.7z
这些属性可以是任何类型,包括基本类型、自定义类型甚至是其他对象。通过Q_PROPERTY,开发者可以声明对象的可读写属性,并利用Q_OBJECT宏实现信号和槽的机制,使得对象间的交互变得更加便捷。
qlalr.zip_qt语法
当你在自定义类中包含Q_OBJECT宏后,必须通过 moc(Meta-Object Compiler)工具生成额外的C++代码,以实现元对象系统的功能。
QT拖放事件七:子类化QMimeData,实现对多个自定义类型进行数据
例如,我们可以定义一个`MyCustomMimeData`类: ```cpp class MyCustomMimeData : public QMimeData { Q_OBJECT public: explicit
Qt
<QObject>// 声明元类型Q_DECLARE_METATYPE(MyCustomType)```3.


