如何编写一个简单Qt多窗口程序

具体步骤如下:
一、创建项目
1.点击“文件->新建文件和项目”,进入项目创建界面,如图所示。选择左边Application,右边选择Qt widgets Application。
在这里插入图片描述
2.点击choose,如图所示,设置好项目名称和路径。
在这里插入图片描述
3.点击下一步,进入选择窗口类界面,(注意:红色箭头那个如果不勾选,那么所有空间都是自己用代码实现,如果勾选,则可以通过拖动按钮来布置控件),这里我把勾选去掉。如图:
在这里插入图片描述
4.点击下一步,然后点击完成,那么项目就新建完成了。如图:
在这里插入图片描述
二、添加登录、退出按钮
1.在mainwindow.h中添加按钮的头文件,QPushButton,并在类MainWindow中添加按钮对象。mainwindow.h的代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "QPushButton"
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
QPushButton * m_pLoginBt;
QPushButton * m_pExitBt;

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H

2.在mainwindow.cpp中,MainWindow中new出按钮的对象,并将其标题依次设置为登录、退出,mainwindow.cpp的代码如下:

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置主窗口大小
this->setGeometry(200,200,600,400);
    //创建按钮,按钮上文本为登录
m_pLoginBt = new QPushButton("登录",this);
    //设置按钮相对于主窗口位置
m_pLoginBt->setGeometry(50,50,80,60);
//设置退出按钮
m_pExitBt = new QPushButton("退出",this);
    //设置退出按钮相对于主窗口位置
m_pExitBt->setGeometry(200,50,80,60);
}

MainWindow::~MainWindow()
{

}

3.这样,就完成了主窗口上创建两个按钮的过程,运行结果如下图所示:
在这里插入图片描述
4.添加登录界面窗口:在左侧项目栏右键工程文件夹添加新文件,如图:
在这里插入图片描述
选择Qt及Qt设计界面类,如下图所示:
在这里插入图片描述
5.点击choose后选择Dialog without Buttons类,类名为Login(注意:类名首字母一定要大写),如图所示:
在这里插入图片描述
6.点击下一步。这样登录主界面窗口就创立完成了。
7.在登录主界面窗口添加一个QLable,标签上显示登录界面。login.h代码如下:

#ifndef LOGIN_H
#define LOGIN_H

#include <QDialog>
#include "QLabel"
namespace Ui {
class Login;
}

class Login : public QDialog
{
    Q_OBJECT
public:
QLabel * m_pLabel;

public:
    explicit Login(QWidget *parent = 0);
    ~Login();

private:
    Ui::Login *ui;
};

#endif // LOGIN_H

login.cpp代码如下:

#include "login.h"
#include "ui_login.h"

Login::Login(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Login)
{
    ui->setupUi(this);
     m_pLabel= new QLabel("登录界面",this);
}

Login::~Login()
{
    delete ui;
}

三.利用信号与槽机制实现点击按钮登录,显示登录界面窗口
在头文件mainwindow.h构造函数中添加槽函数Login(),如下代码所示:

public slots:
void login();

在mainwindow.cpp中添加login函数的实现,以及添加点击登录按钮信号与槽的链接,并添加登录界面的窗口头文件login.h,修改后mainwindow.cpp的代码如下:

#include "mainwindow.h"
#include "login.h"  //记得添加头文件

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置主窗口大小
this->setGeometry(200,200,600,400);
    //创建按钮,按钮上文本为登录
m_pLoginBt = new QPushButton("登录",this);
    //设置按钮相对于主窗口位置
m_pLoginBt->setGeometry(50,50,80,60);
//设置退出按钮
m_pExitBt = new QPushButton("退出",this);
    //设置退出按钮相对于主窗口位置
m_pExitBt->setGeometry(200,50,80,60);
//登录按钮与Login函数的信号与槽的链接
connect(m_pLoginBt,SIGNAL(clicked(bool)),this,SLOT(login()));
}
//加了这个函数
void MainWindow::login()
{
    Login  LoginWd;
    LoginWd.exec();//显示窗口
}
MainWindow::~MainWindow()
{

}

运行结果如下:
在这里插入图片描述
类比登录界面的做法,添加退出窗口界面,类名为Exit,exit.h文件与login.h文件相同,只是exit.cpp中将文本“登入界面”改为“退出界面”,最后在修改mainwindow.h和mainwindows.cpp的代码,修改后,mainwindow.h代码如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "QPushButton"

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
QPushButton * m_pLoginBt;
QPushButton * m_pExitBt;
public slots:
void login();
public slots:
void exit();

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
};

#endif // MAINWINDOW_H

mainwindow.cpp代码如下:

#include "mainwindow.h"
#include "login.h"
#include "exit.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //设置主窗口大小
this->setGeometry(200,200,600,400);
    //创建按钮,按钮上文本为登录
m_pLoginBt = new QPushButton("登录",this);
    //设置按钮相对于主窗口位置
m_pLoginBt->setGeometry(50,50,80,60);
//设置退出按钮
m_pExitBt = new QPushButton("退出",this);
    //设置退出按钮相对于主窗口位置
m_pExitBt->setGeometry(200,50,80,60);
//登录按钮与login函数的信号与槽的链接
connect(m_pLoginBt,SIGNAL(clicked(bool)),this,SLOT(login()));
//退出按钮与exit函数的信号与槽的链接
connect(m_pExitBt,SIGNAL(clicked(bool)),this,SLOT(exit()));
}
//不要把login(exit)和Login(Exit)混淆
void MainWindow::login()
{
    Login  LoginWd;
    LoginWd.exec();//显示窗口
}
void MainWindow::exit()
{
    Exit  LoginWd;
    LoginWd.exec();//显示窗口
}
MainWindow::~MainWindow()
{

}

至此,一个简单Qt多窗口程序完成。

发布了20 篇原创文章 · 获赞 4 · 访问量 4659

猜你喜欢

转载自blog.csdn.net/qq_42884482/article/details/100586180