[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属性用于控制滚动区域的内容部署层是否应跟随滚动区域的大小变化 ...
随机推荐
- 【转】EF 获取类的属性并排除特定属性(getType().GetProperties())
当获取一个类型(class)的所有属性时,想排除指定属性,该如何操作? 比如:EF中一个实体类型UserEntity,通过反射获取这个类的属性时,想排除这个为映射的字段ID 使用以下方法即可! Pro ...
- MINIUI应用
MINIUI是一款优秀的JS前端web框架,提供丰富.强大控件库,能快速开发企业级Web应用软件. 属于付费插件. 如果有兴趣推荐去这个网址看看.MiniUI 在线示例 http://www.min ...
- jQuery获取select值
jQuery操作select标签 即控制select的option属性 <select id="sid" > <option value="-1&quo ...
- numpy ndarray
>>> aarray([[1, 2], [3, 4]])>>> a.shape(2, 2)>>> barray([2, 3])>>&g ...
- 【Insert】使用java对mysql数据库进行插入操作
//插入100条数据package database; import java.sql.Connection; import java.sql.DriverManager; import java.s ...
- Eclipse集成Tomcat插件(特别简单)
. 只需要一个jar包 复制到eclipse/plugins文件夹下,重启Eclipse即可看到如下三只小猫 1.修改Tomcat (1)Tomcat version:版本 (2)Tomcat Hom ...
- SignalR 前期简单配置
一.随便你在哪个命名空间下新建一个Startup类,并在在该类中注册SignalR. using Owin; using System; using System.Collections.Generi ...
- asp.net MVC之AuthorizeAttribute浅析
AuthorizeAttribute是asp.net MVC的几大过滤器之一,俗称认证和授权过滤器,也就是判断登录与否,授权与否.当为某一个Controller或Action附加该特性时,没有登录或授 ...
- Cracking The Coding Interview 4.7_暂存
//原文: // // You have two very large binary trees: T1, with millions of nodes, and T2, with hundreds ...
- eclipse搭建ssm框架
新建数据库ssm 建立数据库表user CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT , `sex` varchar(255) ...