qt如何在其他类中使用主界面ui
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("您好呀"); }
· 运维排查 | SaltStack 远程命令执行中文乱码问题
· Java线程池详解:高效并发编程的核心利器
· 从“看懂世界”到“改造世界”:AI发展的四个阶段你了解了吗?
· 协程本质是函数加状态机——零基础深入浅出 C++20 协程
· 编码之道,道心破碎。
· 基于.net6的一款开源的低代码、权限、工作流、动态接口平台
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· Claude Code 初体验 - Windows
· 基于 C# 编写的轻量级工控网关和 SCADA 组态软件
· 纯C#软实现openGL(V0.1),黑盒变白盒