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;

[QT]QStackedWidget学习使用 可用于多界面的更多相关文章

  1. PyQt(Python+Qt)学习随笔:QDial刻度盘部件功能简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Dial刻度盘输入部 ...

  2. [Qt Creator 快速入门] 第8章 界面外观

    一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户.作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制.这一章将学习在Qt中设计应 ...

  3. PyQt(Python+Qt)学习随笔:QSlider滑动条部件功能简介

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Horizo ...

  4. PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...

  5. 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...

  6. PyQt(Python+Qt)学习随笔:QMainWindow的addDockWidget方法增加QDockWidget停靠窗到主窗口

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 DockWidget除了放在QMainWindow窗口内外,也可以放在 ...

  7. 第15.29节 PyQt(Python+Qt)入门学习:containers容器类部件QScrollArea滚动区域详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 Scroll Area提供了一个呈现在其他部件上的可滚动区域视图,滚动区域用于显示框架内的 ...

  8. PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件概述和属性介绍

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 TabWidget选项卡组件是一个带一到多个选项卡栏和对应页面区域的组件,对应类QTabW ...

  9. PyQt(Python+Qt)学习随笔:QScrollArea的widgetResizable属性

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 滚动区域的widgetResizable属性用于控制滚动区域的内容部署层是否应跟随滚动区域的大小变化 ...

随机推荐

  1. DBCC - Undocumented commands

    These commands may affect system performance and/or force table-level locks.There is no guarantee th ...

  2. zk 创建瞬时、顺序节点的原理

    命令: create -s -e /worker/lock xx zk 的实现代码在:PrepRequestProcessor.pRequest2Txn 中 //The number of chang ...

  3. Linux stress CPU的测试方法

    一.stress工具安装:1.获取stress源码安装包(stress-1.0.4.tar.gz)3.解压并安装 [root@localhost /]#cd /tmp/ [root@localhost ...

  4. php读取excel时间42930转化为时间然后正则验证时间是否通过

    excel时间 function exceltimtetophp($days,$time=false) { if(is_numeric($days)) { //凯撒日计数,要把我们运用的从1970年开 ...

  5. laravel Eloquent 查询数据库判断获取的内容是否为空

    原文地址:https://www.cnblogs.com/love-snow/articles/7205338.html 在使用 Laravel Eloquent 模型时,我们要判断取出的结果集是否为 ...

  6. linux系统管理 计划任务

    一次性计划任务 命令: at 语法: at [-f 文件名] 时间 绝对计时方法 HH:MM yyyy-MM-dd 相对计时方法 now + n minutes now+n hours now + n ...

  7. TNetHTTPClient 使用

    unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  8. find 命令实战巧用

    一.命令简介 find 命令的 -size 参数 单位b(不是byte而是block).c.w.k.M.G.默认是单位b ,也就是1block = 512byte = 0.5kb (文件系统ext4) ...

  9. 每天CSS学习之top/left/right/bottom

    top:值域是数值或百分比,正负都可以.该值表示 距离顶部有多少像素.例如top:10px:即距离顶部10个像素. left/right/bottom与top如出一辙,只是方向不一样而已. 这些属性一 ...

  10. Thêm Một Lần Đau--错错错--IPA--越南语

    越南国际天团HKT的名曲.