zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [NOI2012] 美食节
    [NOI2008] 志愿者招募
    P3834 【模板】可持久化线段树 2(主席树)
    P3919 【模板】可持久化线段树 1(可持久化数组)
    P4168 [Violet]蒲公英
    轻重链剖分
    沉舟侧畔千帆过 病树前头万木春
    P2119 魔法阵 (0.1s 虐杀过程)
    两行虐杀儒略历
    CSP2020 S-2 爆零(日)记 (已完结)
  • 原文地址:https://www.cnblogs.com/lbx-cnblogs/p/13602203.html
Copyright © 2011-2022 走看看