[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 = 0);
    ~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(10,50);
    m_pStackedWidget->resize(200,200);

    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 = 0;
    }
    m_pStackedWidget->setCurrentIndex(index);
}

mainwindow.cpp

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

总结:

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

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

时间: 2024-08-26 10:10:42

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

Qt多线程学习:创建多线程

[为什么要用多线程?] 传统的图形用户界面应用程序都仅仅有一个运行线程,而且一次仅仅运行一个操作.假设用户从用户界面中调用一个比較耗时的操作,当该操作正在运行时,用户界面一般会冻结而不再响应.这个问题能够用事件处理和多线程来解决. [Linux有线程的概念吗?] 传统的UNIX系统也支持线程的概念,但一个进程里仅仅同意有一个线程,这样多线程就是多进程.Linux下的Posix线程(pthreads)是一种轻量级的进程的移植性实现,线程的调度由内核完毕,每一个线程都有自己的编号.假设使用线程,整体

Qt 插件学习(一)

插件是什么 注意:这儿暂时不考虑静态插件(潜意识中总觉得它根本就不算插件). 插件是一个动态库(共享库).动态库是一个独立的文件中的独立模块,可被多个程序访问. 先看动态库的两种用法 1. 程序链接时指明动态库 这时程序中包含相应的头文件,编译时指定头文件路径,对于qmake来说: LIBS += -L/path1/path2/.../ -labcdINCLUDEPATH += /p1/p2/.../ 这样一来,程序启动时会自动加载需要的链接库. 2. 程序中动态加载动态库 运行过程中找到来查找

QT基础学习笔记

Qt简介:1991, 挪威奇趣科技Trolltech开发的跨平台c++图形用户界面(GUI)应用程序开发.2008,被诺基亚收购2012,转让给芬兰的Digia公司. 商业版:专业版,企业版: // 开源版(GNU) 优势:1.跨平台 2.面向对象 3.丰富API 类库  4.可视化编程 5,时间驱动机制 JAVA--compile once, run anywhere    一次编译,到处运行Qt-- wrire once ,comile anywhere     一次编写,到处编译 桌面操作

【Qt】学习笔记(一)

1.setupUi(this) : setupUi(this)是由.ui文件生成的类的构造函数这个函数的作用是对界面进行初始化它按照我们在Qt设计器里设计的样子把窗体画出来 setupUi(this)会自动把符合on_objectName_signalName()命名的任意槽与相应的objectName的signalName()连接在一起.即 void GoToCellDialog::on_lineEdit_textChanged() { okButton->setEnabled(lineEdi

Qt入门学习——Qt 5 帮助文档的使用

Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法. 我们使用 Qt 帮助文档,主要分为这么几步: 1)类使用的相关介绍 2)查看所用部件(类)的相应成员函数(功能,参数,返回值) 3)查看部件的信号 4)查看部件的事件(所对应的虚函数如何编写) 1)类使用的相关介绍 光标移动到类名字的地方,接着按“F1”即可跳

qt模型学习

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' from PyQt4.Qt import * from PyQt4.QtGui import * from PyQt4.QtCore import * import sys,os #Qt 模型类 """ 在模型/视图中,模型提供了一个标准操作供视图和委托(view/delegate)来访问数据,由类QAbstractItemModel定义的 无论

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

??一个完善的应用程序不仅应该有实用的功能,还要有一个漂亮的外观,这样才能使应用程序更加友好,更加吸引用户.作为一个跨平台的UI开发框架,Qt提供了强大而灵活的界面外观设计机制.这一章将学习在Qt中设计应用程序外观的相关知识,会对Qt 风格QStyle和调色板QPalette进行简单介绍,然后再对Qt样式表(Qt Style Sheets)进行重点讲解,最后还会涉及了不规则窗体和透明窗体的实现方法. 8.1 Qt风格 ??Qt中的各种风格是一组继承自QStyle的类.QStyle类是一个抽象基类

iOS: 学习笔记, 添加一个带界面约束的控制器

1. 创建一个空iOS应用程序(Empty Application). 2. 添加加控制器类. 修改控制器类的viewDidLoad 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 //创建标题 5 UILabel *header = [[UILabel alloc] init]; 6 header.text = @"欢迎来到我的世界!"; 7 header.textAlignment = NSTextAlignmentCenter

基于Qt的类QQ气泡聊天的界面开发

最近在写IM 聊天界面,想设计出一个类似QQ气泡聊天的样式 使用了几种办法 1:使用Qt下面的QListview来实现QQ类似效果,差强人意 2:使用QWebview加载html css样式来完成,发现效果不错,但是毕竟webview占用巨大的内存 3:使用QTextBrower加载css,但是好像只支持css2.1版本,css3完全不支持,这样的话,花哨的样式应该是无法实现 基于以上三种思路 最后发现还是QML实现比较好,但是qml基于文本与动画图片混合显示没找到好的办法,有好的办法的希望可以