QT实现界面跳转切换
来源:互联网 发布:山东省网络问政 编辑:程序博客网 时间:2024/04/30 12:29
简介
Qt图形应用中经常会遇到从一个界面跳转到另一个界面应用,这里简单介绍一种使用信号-槽机制实现的界面跳转方案。创建one,two, three三个图像界面类,每一个界面类中实现一个信号函数,在按钮的槽函数中发送该信号, 使用QStackedLayout存放所有的界面,在主窗口使用connect将信号和QStackedLayout::setCurrentIndex关联起来。
界面one
界面one图形如下:
one.h
#ifndef ONE_H#define ONE_H#include <QWidget>class Two;namespace Ui {class One;}class One : public QWidget{ Q_OBJECTpublic: explicit One(QWidget *parent = 0); ~One();signals: void display(int number);private slots: void on_nextPushButton_clicked();private: Ui::One *ui; Two *two;};#endif // ONE_H
one.cpp
#include "one.h"#include "ui_one.h"#include "two.h"#include "widget.h"One::One(QWidget *parent) : QWidget(parent), ui(new Ui::One){ ui->setupUi(this);}One::~One(){ delete ui;}void One::on_nextPushButton_clicked(){ emit display(1);}
界面two
界面two图形如下:
two.h
#ifndef TWO_H#define TWO_H#include <QWidget>namespace Ui {class Two;}class Two : public QWidget{ Q_OBJECTpublic: explicit Two(QWidget *parent = 0); ~Two();signals: void display(int number);private slots: void on_previousPushButton_clicked(); void on_nextPushButton_clicked();private: Ui::Two *ui;};#endif // TWO_H
two.cpp
#include "two.h"#include "ui_two.h"Two::Two(QWidget *parent) : QWidget(parent), ui(new Ui::Two){ ui->setupUi(this);}Two::~Two(){ delete ui;}void Two::on_previousPushButton_clicked(){ emit display(0);}void Two::on_nextPushButton_clicked(){ emit display(2);}
界面three
界面three图形如下:
three.h
#ifndef THREE_H#define THREE_H#include <QWidget>namespace Ui {class Three;}class Three : public QWidget{ Q_OBJECTpublic: explicit Three(QWidget *parent = 0); ~Three();signals: void display(int number);private slots: void on_previousPushButton_clicked();private: Ui::Three *ui;};#endif // THREE_H
three.cpp
#include "three.h"#include "ui_three.h"Three::Three(QWidget *parent) : QWidget(parent), ui(new Ui::Three){ ui->setupUi(this);}Three::~Three(){ delete ui;}void Three::on_previousPushButton_clicked(){ emit display(1);}
主界面
widget.h
#ifndef WIDGET_H#define WIDGET_H#include <QWidget>class One;class Two;class Three;class QStackedLayout;class QVBoxLayout;class Widget : public QWidget{ Q_OBJECTpublic: explicit Widget(QWidget *parent = 0); ~Widget();private: One *one; Two *two; Three *three; QStackedLayout *stackLayout; QVBoxLayout *mainLayout;};#endif // WIDGET_H
widget.cpp
#include "widget.h"#include "ui_widget.h"#include "one.h"#include "two.h"#include "three.h"#include <QStackedLayout>#include <QPushButton>#include <QVBoxLayout>Widget::Widget(QWidget *parent) : QWidget(parent){ setFixedSize(400, 300); one = new One; two = new Two; three = new Three; stackLayout = new QStackedLayout; stackLayout->addWidget(one); stackLayout->addWidget(two); stackLayout->addWidget(three); connect(one, &One::display, stackLayout, &QStackedLayout::setCurrentIndex); // 0 connect(two, &Two::display, stackLayout, &QStackedLayout::setCurrentIndex); // 1 connect(three, &Three::display, stackLayout, &QStackedLayout::setCurrentIndex); // 2 mainLayout = new QVBoxLayout; mainLayout->addLayout(stackLayout); setLayout(mainLayout);}Widget::~Widget(){}
main.cpp
#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}
注:源代码下载地址http://download.csdn.net/detail/tj807126663/7540203
0 0
- QT实现界面跳转切换
- Qt的“QStackedLayout”实现多界面切换
- QT界面切换
- Android (界面切换)跳转
- Qt 界面实现多国语言的切换实例
- Qt 界面实现多国语言的切换实例
- Qt 添加翻译文件,实现中英文界面切换
- 进程切换跳转实现
- QT界面切换 绿色背景
- Android实现界面跳转
- 实现界面的跳转
- Storyboard实现界面跳转
- textview实现界面跳转
- IOS实现界面切换
- Android实现 界面切换
- QT实现窗口跳转
- QT实现语言切换
- 【QT】:QT实现登录界面
- PHP环境配置
- 享元模式c++代码实现
- flashplayer11+已导入JSON库
- android handler Message 的使用备忘录
- 背后黑暗
- QT实现界面跳转切换
- 常用AT指令
- 获取网站的根目录信息
- linux下的简易有道字典
- 截图工具 Snagit
- DIV的CSS height:100%无效的解决办法
- 黑马程序员----java基础加强(5)
- SessionState -- SqlServer部署
- 安卓开发者必备的几个工具