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
  • 相关阅读:
    .NET开源工作流RoadFlow-表单设计-组织机构选择
    .NET开源工作流RoadFlow-表单设计-按钮
    .NET开源工作流RoadFlow-表单设计-标签(label)
    git客户端使用
    简单几句概括join
    算法笔记:线段树
    通常情况下的中国剩余定理
    NOIP2016:Day2解题报告
    关于jzyzoj——P1341:被污染的牛奶的题解探讨
    关于错位排列
  • 原文地址:https://www.cnblogs.com/lbx-cnblogs/p/13602203.html
Copyright © 2011-2022 走看看