Qt 第二课 对话框之间的切换
2017-01-02 22:43
465 查看
在做一些登录系统的时候,可能需要在登录界面和主界面之间进行切换,今天学习了这部分内容,顺便复习了前面学习到的信号,槽,模态对话框,非模态对话框。
登录对话框:
#ifndef LOGINDLG_H
#define LOGINDLG_H
#include<QDialog>
#include<QPushButton>
class LoginDlg : public QDialog
{
Q_OBJECT
public:
LoginDlg(QWidget *parent = 0);
~LoginDlg();
private:
QPushButton*pOK;
QPushButton*pExit;
private slots:
void OnOkClicked();
void OnExitClicked();
};
#endif // LOGINDLG_H
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include"logindlg.h"
class QPushButton;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QPushButton*pNewWnd;
LoginDlg*pNewDlg;
private slots:
void BtnNewWndClicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include <QApplication>
#include"logindlg.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
LoginDlg dlg;
if(dlg.exec()==QDialog::Accepted)
{
w.show();
return a.exec();
}
else
return 0;
}
登录对话框:
#ifndef LOGINDLG_H
#define LOGINDLG_H
#include<QDialog>
#include<QPushButton>
class LoginDlg : public QDialog
{
Q_OBJECT
public:
LoginDlg(QWidget *parent = 0);
~LoginDlg();
private:
QPushButton*pOK;
QPushButton*pExit;
private slots:
void OnOkClicked();
void OnExitClicked();
};
#endif // LOGINDLG_H
#include"logindlg.h" #include<QHBoxLayout> LoginDlg::LoginDlg(QWidget *parent):QDialog(parent) { pOK=new QPushButton("OK",this); pExit=new QPushButton("Exit",this); QHBoxLayout*pMainLayout=new QHBoxLayout(this); pMainLayout->addWidget(pOK); pMainLayout->addWidget(pExit); this->setLayout(pMainLayout); connect(pOK,SIGNAL(clicked()),this,SLOT(OnOkClicked())); connect(pExit,SIGNAL(clicked()),this,SLOT(OnExitClicked())); // resize(400,200); /// setGeometry(800,800,400,200); setWindowTitle("hello world "); } LoginDlg::~LoginDlg() { static int a=0;//为了调试析构 , 因为在书上看到当以一个窗口为父窗口,new了一个窗口或部件的时候,不需要写delete,在父窗口析构的时候,会释放所 //有子窗口 a++; } void LoginDlg:: OnOkClicked() { return accept(); } void LoginDlg::OnExitClicked() { return reject(); }主窗口:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include"logindlg.h"
class QPushButton;
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QPushButton*pNewWnd;
LoginDlg*pNewDlg;
private slots:
void BtnNewWndClicked();
};
#endif // MAINWINDOW_H
#include "mainwindow.h" #include "ui_mainwindow.h" #include<QPushButton> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); pNewWnd=new QPushButton("重新登录",this); //connect(pNewWnd,SIGNAL(clicked()),this,SLOT(OnBtnNewWndClicked())); connect(pNewWnd,SIGNAL(clicked()),this,SLOT(BtnNewWndClicked())); } MainWindow::~MainWindow() { delete ui; } //这里需要对close()函数进行说明:只有当最后一个窗口调用close时,程序才会退出,其他的情况只是将窗口隐藏起来。 void MainWindow::BtnNewWndClicked() { close(); pNewDlg=new LoginDlg(this); //pNewDlg->setModal(true); if(pNewDlg->exec()==QDialog::Accepted) this->show(); }main 函数
#include "mainwindow.h"
#include <QApplication>
#include"logindlg.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
LoginDlg dlg;
if(dlg.exec()==QDialog::Accepted)
{
w.show();
return a.exec();
}
else
return 0;
}
相关文章推荐
- Gtkmm 主窗口与其对话框之间的切换
- Qt项目在Qt Creator和Visual Studio之间切换
- 对话框与子窗口之间的切换,以及如何卡入到控件里
- 点击一个按钮实现在不同对话框之间的切换,帮忙看下这代码能不能这样写,为什么不对呀
- VC多对话框界面程序,界面之间的切换问题
- 对话框之间的切换,显示问题
- QT 多窗口显示 窗口之间的切换
- QT 窗口之间跳转切换
- Qt项目在Qt Creator和Visual Studio之间切换
- Qt:QML:程序最大化最小化全屏之间的切换
- qt不同窗口之间的切换
- 对话框中run<->stop之间的切换
- QT初学笔记——多窗口之间的切换
- QT实现多窗口之间的切换
- QT 自定义模态对话框
- 对话框之间传送数据
- vim——打开多个文件、同时显示多个文件、在文件之间切换
- MFC对话框之间传递数据
- Android软键盘与聊天页面底部布局之间优雅地切换
- MFC学习第十节:输出对话框(第二、三种方法)