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("您好呀");
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM