如何添加自定义的Qt类

如果要派生一个Qt类,按照向导Add New… > C++ Class,在 Base  Class 填入 QGraphicsRectItem , 则默认生成的代码是这样的:

class custom_item : public QGraphicsRectItem
{
public:
    custom_item();
};
#include "custom_item.h"

custom_item::custom_item()
{

}

并不像生成的 MainWindow 类

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
  • MainWindow 继承自 QMainWindow
  • explicit 为 C++ 关键字,显性调用构造函数
  • QWidget *parent 用于指定父对象,默认为0。QWidget 是屏幕显示的组件的父类,继承自 QObject。当一个 QObject 对象在堆上创建时,Qt会同时为其创建一个对象数,delete 时,如果对象有 parent ,则自动从 parent 的 children() 列表中删除,如果有 child,则自动 delete 每一个 child。必要情况下需要设置parent 属性。

那么,怎么来添加类具有这样的构造函数呢?

Base Class 选择 QObject ,然后再修改即可。

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.