你的问题是一个经典的 XY 问题:你正在寻找错误问题的答案。
是的,我希望能够添加一些基本方法Ui_MainWindow
不,你没有。忘记你曾经以为你做到了。如果您坚持,您应该编辑问题以准确说明您要执行的操作:您要添加哪些方法以及它们的作用和用途?你要让我们相信你的方法很有可能首先变得有意义。
这个Ui_MainWindow
类从来没有被修改过。也许您正试图Qt Designer
用作代码编辑器?它不是。该.ui
文件并不意味着携带任何代码。因此,从它生成的输出也不意味着携带您编写的代码 - 只有实现 GUI 设计的代码。
如果要添加方法,则应将它们直接添加到使用Ui::
该类的小部件中。毕竟,它是一个值类,用来保存一堆指向东西的指针。您应该将其按值存储在小部件中,并将方法添加到小部件类本身。你甚至可以让你的小部件类派生自Ui::
该类:
class MyWidget : public QWidget, protected Ui::MyWidget {
...
};
这使得任何方法都MyWidget
与您添加到Ui::MyWidget
自身的方法一样好。
我只遇到过一个我想修改uic
生成的类的实例,那就是向它添加一个方法。这样做是为了方便,并尽量减少现有代码的更改以尝试修复它。为此,您将方法添加到派生类:
template <typename T> MyUi : public T {
void myMethod();
};
class MyWidget : public QWidget {
MyUi<Ui::MyWidget> ui;
...
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
ui.setupUi(this);
ui.myMethod();
}
};