[QT]QStackedWidget学习使用 可用于多界面
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学习使用 可用于多界面的更多相关文章
- PyQt(Python+Qt)学习随笔:QDial刻度盘部件功能简介
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer中的Dial刻度盘输入部 ...
- [Qt Creator 快速入门] 第8章 界面外观
一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户.作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制.这一章将学习在Qt中设计应 ...
- PyQt(Python+Qt)学习随笔:QSlider滑动条部件功能简介
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.概述 Designer输入部件中的Horizo ...
- PyQt(Python+Qt)学习随笔:富文本编辑器QTextEdit功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QTextEdit是一个高级的所见即所得的文档查看器和编辑器 ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
- PyQt(Python+Qt)学习随笔:QMainWindow的addDockWidget方法增加QDockWidget停靠窗到主窗口
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 DockWidget除了放在QMainWindow窗口内外,也可以放在 ...
- 第15.29节 PyQt(Python+Qt)入门学习:containers容器类部件QScrollArea滚动区域详解
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 Scroll Area提供了一个呈现在其他部件上的可滚动区域视图,滚动区域用于显示框架内的 ...
- PyQt(Python+Qt)学习随笔:QTabWidget选项卡部件概述和属性介绍
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 TabWidget选项卡组件是一个带一到多个选项卡栏和对应页面区域的组件,对应类QTabW ...
- PyQt(Python+Qt)学习随笔:QScrollArea的widgetResizable属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 滚动区域的widgetResizable属性用于控制滚动区域的内容部署层是否应跟随滚动区域的大小变化 ...
随机推荐
- NOIP2016玩具谜题
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singersi ...
- 【转】给DataTable和DataRow扩展方法,直接转换为对象集合或对象
/// <summary> /// 类 说 明:给DataTable和DataRow扩展方法,直接转换为对象集合或对象 /// 补充说明:此扩展类可以极大的简化操作,但是性能低下,大数据以 ...
- Linux五种IO模型(同步 阻塞概念)
Linux五种IO模型 同步和异步 这两个概念与消息的通知机制有关. 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.比如,调用readfrom系统调用时,必须等待IO操 ...
- Android Studio向项目添加C/C++原生代码教程
说明:本文相当于官方文档的个人重新实现,官方文档链接:https://developer.android.com/studio/projects/add-native-code 向项目添加C/C++代 ...
- Java连接Oracle/MySQL数据库教程
一.下载 oracle java驱动下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090 ...
- QPainter使用不同风格的QBrush来填充区域
效果图: void WgtText::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QP ...
- mac navicate破解版汉化
https://pan.baidu.com/s/1dRoalG8lZ-AMGmZrj8OhpQ 提取密码:e8ad 安装完navicate之后解压zh-Hans.zip 点击Resources文件夹 ...
- mac Nginx+CI出现404错误
主要是ci框架需要配置rewrite nginx.conf配置文件添加: location /wechat/ { if (!-e $request_filename) { rewrite ^/wech ...
- nyoj 1091 还是01背包(超大数dp)
nyoj 1091 还是01背包 描述 有n个重量和价值分别为 wi 和 vi 的物品,从这些物品中挑选总重量不超过W的物品,求所有挑选方案中价值总和的最大值 1 <= n <=40 1 ...
- Win10系列:JavaScript综合实例3
实现主页面的功能之后,接下来实现分类页面.分类页面中显示一种菜肴类别的详细信息,包括类别名称.图片.描述信息以及属于该类别的一些菜肴.在pages文件夹中添加一个名为classDetail的文件夹,并 ...