1、UI默認是私有的,因此需要在外部調用,需要改為public
Ui::Widget *ui; // 1、將ui公有化 /* private: // 這行內容注釋掉 Ui::Widget *ui;*/
2、自定義窗口類
static Widget *myWidget; // 2、定義一個靜態的ui 定義一個窗口類 ui在自定義窗口類myui下
3、自定義窗口類初始化,在構造函數中
Widget* Widget::myWidget = nullptr; // 3、初始化自定義窗口類
4、把當前窗口賦值給自定窗口
myWidget = this; // 4、給自定義窗口賦值
5、添加新的類test
Ui::Widget *ui = Widget::myWidget->ui; // 5、將主類中的ui傳過來
6、可以在test類中調用ui
// 6、對類中的內容初始化 void test::testInit() { ui->lineEdit->setText("您好呀"); }
7、程序運行,需要在主類中調用
test t; t.testInit(); // 7、test類初始化
8、全部代碼

// widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = nullptr); ~Widget(); static Widget *myWidget; // 2、定義一個靜態的ui 定義一個窗口類 ui在自定義窗口類myui下 Ui::Widget *ui; // 1、將ui公有化 /* private: Ui::Widget *ui;*/ }; #endif // WIDGET_H // widget.cpp #include "widget.h" #include "ui_widget.h" #include "test.h" Widget* Widget::myWidget = nullptr; // 3、初始化自定義窗口類 Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); myWidget = this; // 4、給自定義窗口賦值 test t; t.testInit(); // 7、test類初始化 } Widget::~Widget() { delete ui; } // test.h #ifndef TEST_H #define TEST_H #include <QWidget> #include "widget.h" #include "ui_widget.h" class test : public QWidget { Q_OBJECT public: explicit test(QWidget *parent = nullptr); Ui::Widget *ui = Widget::myWidget->ui; // 5、將主類中的ui傳過來 void testInit(); // test類初始化函數 signals: }; #endif // TEST_H //test.cpp #include "test.h" test::test(QWidget *parent) : QWidget(parent) { } // 6、對類中的內容初始化 void test::testInit() { ui->lineEdit->setText("您好呀"); }