如何让 Qt 使用用户定义的类?

Jac*_*ack 2 qt-creator qplaintextedit custom-widgets qt5 windows-10

我想使用用户定义的类而不是 Qt 在Ui_MainWindow类中生成的类,以便我可以在 Qt 的 GUI 设计器上使用该控件。例如,目前它的定义如下:

class Ui_MainWindow
{
public:
    QPlainTextEdit *list;
 // ...
};
Run Code Online (Sandbox Code Playgroud)

我想使用我的用户定义的类:

class Ui_MainWindow
{
public:
    MyCustomQPlainTextEdit *list;
 // ...
};
Run Code Online (Sandbox Code Playgroud)

我不能只在 ui_mainwindow.h 头文件中手动修改它,因为每次 GUI 设计器生成其元数据时该值都会丢失。我可以阻止 Qt 使用该类,以便我可以使用自己的类吗?

Dev*_*aul 5

如果您MyCustomQPlainTextEdit继承自,QPlainTextEdit您可以将 ui 文件中的小部件“提升”到您的自定义类。

在 Qt Creator 中打开您的 ui 文件,右键单击该小部件并选择Promote To

[在此输入图像描述]

然后在打开的对话框中添加您的自定义类,如下所示:

[在此输入图像描述]

如果需要,请务必根据项目的设置方式更改头文件的路径。然后单击Add

添加自定义类后,单击Promote瞧,生成的ui_<blah>.h.