如果要派生一个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 ,然后再修改即可。