Qt如何调用建立好的ui界面

       在我们刚才学习qt的时候,很多的时候,按照新建立的工程文件,出现一个困扰。就是如何调用额外建立的UI界面。在这里主要是说明这里的面的关键因素。其实学习qt,如果之前有过学过C++的同事,那么就学习qt就会很容易上手。因为qt主要的核心就是以c++为主的。就好像我们现在讨论的如何添加ui界面到我们的主窗口中,或者调用ui界面弹出一个ui界面也是同样的道理。

      1)现在我们开始建立一个widget类的主窗口界面,如下图所示:

          

   mainwindow.h 头文件代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QMainWindow>
#include "bms1.h"
#include "bms2.h"
 
 
namespace Ui {
class MainWindow;
}
 
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
 
private:
    Ui::MainWindow *ui;
};
 
 
#endif // MAINWINDOW_H


 mainwindow.cpp 文件代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
 
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
 
 
}
 
 
MainWindow::~MainWindow()
{
    delete ui;
}

2)经过以上第一步的操作,我们已经建立了mainwindow主窗口界面,那么我们现在开始创建的我们另外的ui界面。

点击选中工程文件里面的“界面文件”,右键点击,选中“添加新文件”,如下图所示:


3)选中qt设计界面类,如下图所示;

   

4)选中widget类,如下图所示:


点击下一步,一直创建完毕。

5)最后创建完毕的界面,我们给它添加些其他的控件,如下图示,

同时将该ui界面的属性上的objectname修改名字为BMS1:


6)同理,按照如上的方法,我们再创建一个Ui界面。

修改objectname名字为BMS2,如下图所示:


7)这个时候,因为我们现在建立的这两个BMS1,BMS2这两个ui界面,没有自带上类的代码。如我们刚才刚刚建立的mainwindow主机是,系统就会自动生成两个文件mainwindow,h 及mainwindow.cpp。但是我们想调用以上建立BMS1,BMS2界面。所以,我们也应该给这两个ui界面,配置属于他们自己的头文件及执行文件。如下图所示,添加Qt设计师界面类。


8)我们分别建立两个类,名称分别为BMS1,BMS2.

BMS1.h 头文件代码,如下所示:

#ifndef BMS1_H
#define BMS1_H
 
 
#include <QWidget>
 
 
namespace Ui {
class BMS1;
}
 
 
class BMS1 : public QWidget
{
    Q_OBJECT
 
 
public:
    explicit BMS1(QWidget *parent = 0);
    ~BMS1();
 
 
private:
    Ui::BMS1 *ui;
};
 
 
#endif // BMS1_H
BMS1.cpp 头文件代码,如下所示: 
 

#include "bms1.h"
#include "ui_bms1.h"
 
 
BMS1::BMS1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::BMS1)
{
    ui->setupUi(this);
}
 
 
BMS1::~BMS1()
{
    delete ui;
}

同样,针对第二个BMS2的ui界面,头文件及执行文件也是类同。这里就再描述。

在这里面,最关键的技术,就是我们再建立这两个ui的界面类的时候,一定要确保,这两个界面类的名字:BMS1,BMS2和我们刚才再建立两个ui界面的objectname的名字保存一致。这样,我们就可以把ui界面和ui界面类库绑定在一起了。

9)现在开始,回过头来,我们就可以在mainwindow主窗口头文件上面,分别添加两个包含文件,如下图所示:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QMainWindow>
#include "bms1.h"
#include "bms2.h"

  再然后,用我们C++的派生类,来进行类派生,及建立按键信号槽。

BMS1 *pDisplaydow;BMS2 *PSetupwindow;

mainwindow.h头文件如下所示:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
 
#include <QMainWindow>
#include "bms1.h"
#include "bms2.h"
 
 
namespace Ui {
class MainWindow;
}
 
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
 
public:
    BMS1 uiBms1;
    BMS2 uiBms2;
    BMS1 *pDisplaydow;
    BMS2 *PSetupwindow;
public:
    //BMS1 *show(){return pDisplaydow;}
    //BMS2 *setupwindow(){return PSetupwindow;}
private slots:
    void on_commandLinkButton_clicked();
 
 
    void on_commandLinkButton_2_clicked();
 
 
private:
    Ui::MainWindow *ui;
};
 
 
#endif // MAINWINDOW_H
 
 

mainwindow.cpp头文件如下所示:

#include "mainwindow.h"
#include "ui_mainwindow.h"
 
 
 
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
 
    //BMS1 *show(){return pDisplaydow;}
 
 
    pDisplaydow = new BMS1(this);
    pDisplaydow->setObjectName("显示界面");
    pDisplaydow->setGeometry(200,50,704,600);
    pDisplaydow->show();
 
 
 
 
    PSetupwindow = new BMS2(this);
    PSetupwindow->setObjectName("显示设置参数");
    PSetupwindow->setGeometry(200,50,704,600);
    PSetupwindow->hide();
 
 
    //setFixedSize(800,600);
}
 
 
MainWindow::~MainWindow()
{
    delete ui;
}
 
 
void MainWindow::on_commandLinkButton_clicked()
{
    //uiBms1.show();
    if(PSetupwindow->isVisible())
    {
        PSetupwindow->hide();
        pDisplaydow->show();
    }
}
 
 
void MainWindow::on_commandLinkButton_2_clicked()
{
    //uiBms2.show();
    if(pDisplaydow->isVisible())
    {
        pDisplaydow->hide();
        PSetupwindow->show();
    }
}


10)通过主窗口建立的信号槽分别为:

private slots:
    void on_commandLinkButton_clicked();
 
 
    void on_commandLinkButton_2_clicked();

11)重新链接编制,执行执行,点击按钮,显示串口界面1,界面2.

说明BMS1,BMS2两个ui界面已经成功被主窗口调用。


                                                                        显示BMS1界面


                                                            显示BMS2界面






猜你喜欢

转载自blog.csdn.net/bdhjun123/article/details/80024326
今日推荐