2017-04-11 01:52:01

根据大牛一去、二三里的教程提示,成功将多个对话框进行切换。

学习教程地址:http://blog.csdn.net/liang19890820/article/details/51614346

结果展示:

1.新建一个带ui界面的QWidgetApplication。

2.创建三个dialog;dialog1,dialog2,dialog3,(添加新文件之后选择QT中的界面类)

分别在对应对话框的qtDesigner中的样式表进行color设置背景色设置:

dialog1:background-color: rgb(85, 170, 255);

dialog2:background-color: rgb(85, 85, 255);

dialog3:background-color: rgb(85, 85, 127);

3.撸代码开始:

① main.cpp 不需要修改。

② mainwindow.h 中添加

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow> class QStackedWidget; namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT public:
explicit MainWindow(QWidget *parent = );
~MainWindow();
void switchPage();
private:
Ui::MainWindow *ui;
QStackedWidget *m_pStackedWidget; }; #endif // MAINWINDOW_H

mainwindow.h

③ mainwindow.cpp中添加

#include <QtWidgets>

#include "mainwindow.h"
#include "ui_mainwindow.h" #include "dialog1.h"
#include "dialog2.h"
#include "dialog3.h" MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// QPushButton *pButton = new QPushButton(this);
// QLabel *pFirstPage= new QLabel(this);
// QLabel *pSecondPage = new QLabel(this);
// QLabel *pThirdPage = new QLabel(this);
// m_pStackedWidget = new QStackedWidget(this); // pButton->setText(QStringLiteral("点击切换"));
// pFirstPage->setText(QStringLiteral("一去丶二三里"));
// pSecondPage->setText(QStringLiteral("青春不老,奋斗不止!"));
// pThirdPage->setText(QStringLiteral("纯正开源之美,有趣、好玩、靠谱。。。")); // pFirstPage->move(10,100);
// pSecondPage->move(10,100);
// pThirdPage->move(10,100);
// pButton->move(10,100);
// // 添加页面(用于切换)
// m_pStackedWidget->addWidget(pFirstPage);
// m_pStackedWidget->addWidget(pSecondPage);
// m_pStackedWidget->addWidget(pThirdPage); // m_pStackedWidget->move(10,200); //// QVBoxLayout *pLayout = new QVBoxLayout();
//// pLayout->addWidget(pButton, 1, Qt::AlignRight | Qt::AlignVCenter);
//// pLayout->addWidget(m_pStackedWidget);
//// pLayout->setSpacing(10);
//// pLayout->setContentsMargins(10, 10, 10, 10);
//// setLayout(pLayout); // // 连接切换按钮信号与槽
// connect(pButton, &QPushButton::clicked, this, &MainWindow::switchPage); QPushButton *pButton = new QPushButton(this);
m_pStackedWidget = new QStackedWidget(this); pButton->setText(QStringLiteral("点击切换"));
Dialog1 *dlg1 = new Dialog1(this);
Dialog2 *dlg2 = new Dialog2(this);
Dialog3 *dlg3 = new Dialog3(this);
// 添加页面(用于切换)
m_pStackedWidget->addWidget(dlg1);
m_pStackedWidget->addWidget(dlg2);
m_pStackedWidget->addWidget(dlg3);
m_pStackedWidget->move(,);
m_pStackedWidget->resize(,); connect(pButton,&QPushButton::clicked,this,&MainWindow::switchPage); } MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::switchPage()
{
int count = m_pStackedWidget->count();
int index = m_pStackedWidget->currentIndex();
++index;
if(index >= count)
{
index = ;
}
m_pStackedWidget->setCurrentIndex(index);
}

mainwindow.cpp

其中代码注释的部分是教程中的代码。

总结:

1.QStackedWidget需要设置大小和位置,初始的大小比较小,猜想可以使用布局设计器设置大小,这个需要以后验证,有人验证的话麻烦请留言告知谢谢。

2.用QStackedWidget进行界面设计感觉比较适合目前雨大的情况,还有其他方式实现多界面切换,请见:http://bbs.csdn.net/topics/350099102;

最新文章

  1. .cn根服务器被攻击之后
  2. 动态创建script在IE中缓存js文件时导致编码不正确bug
  3. Git撤销操作
  4. iOS多线程初见
  5. IREP_SOA Integration SOAP概述(概念)
  6. 转:关于视频H264编解码的应用实现
  7. C++ stringstream介绍,使用方法与例子
  8. HDOJ1253 胜利大逃亡 BFS
  9. 9个Java初始化和回收的面试题
  10. Android.mk文件语法规范及使用模板
  11. linux中curl命令
  12. 数数字(Digit Counting,ACM/ICPC Danang 2007,UVa1225)
  13. win 10 和 CentOS 7 双系统安装
  14. PHP 实例 AJAX 投票
  15. location.origin不兼容IE8解决方案
  16. BUAA_OO第二单元作业总结——多线程
  17. Java常用API——String字符串运算
  18. 使用docker compose编排容器
  19. PHP PC端微信扫码支付【模式二】详细教程-附带源码(转)
  20. Maven支撑下的War应用依赖另外一个WAR应用的解决方案

热门文章

  1. -bash: /etc/init.d/nginx: /bin/bash^M: bad interpreter: No such file or directory
  2. java中super和this的使用
  3. Oracle RAC管理及维护命令详解
  4. 交互式shell编程
  5. 转 举例说明使用MATLAB Coder从MATLAB生成C/C++代码步骤
  6. 【Java算法】冒泡排序
  7. 1.3用socketserver创建服务器
  8. DevExpress ASP.NET v18.2新功能详解(二)
  9. centos7 安装jdk8 bash脚本 并配置环境变量
  10. linux 清空文件