具体步骤如下:
一、创建项目
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多窗口程序完成。