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

How can I make Qt use a user-defined class?

我想使用用户定义的 class 而不是 Qt 在 Ui_MainWindow class 中生成的,这样我就可以在 Qt 的 GUI 设计器上使用该控件。例如,目前它被定义为:

class Ui_MainWindow
{
public:
    QPlainTextEdit *list;
 // ...
};

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

class Ui_MainWindow
{
public:
    MyCustomQPlainTextEdit *list;
 // ...
};

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

如果您的 MyCustomQPlainTextEdit 继承自 QPlainTextEdit,您可以 "promote" 将 ui 文件中的小部件添加到您的自定义 class。

在 Qt Creator 中打开 ui 文件,右键单击小部件并 select Promote To

[

然后在打开的对话框中,像这样添加您的自定义 class:

[

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

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