QT实现界面跳转切换
2014-06-23 16:15
357 查看
简介
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_OBJECT public: 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_OBJECT public: 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_OBJECT public: 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_OBJECT public: 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
相关文章推荐
- Qt 国际化之二:多国语界面动态切换的实现
- Qt实现多国语言(即界面翻译)可实时进行切换
- Qt实现多国语言(即界面翻译)可实时进行切换
- Qt 国际化之二:多国语界面动态切换的实现
- React Native导航组件react-navigation(TabNavigator+StackNavigator实现界面间跳转,Tab切换)
- Qt 界面实现多国语言的切换实例
- Qt 添加翻译文件,实现中英文界面切换
- Qt4.5多国语界面动态切换的实现
- Qt的“QStackedLayout”实现多界面切换
- Qt 界面实现多国语言的切换实例
- Qt4.5多国语界面动态切换的实现(转载)
- 转载 37个Ajax和CSS实现的Tab选项卡切换效果界面
- QT中采用信号槽机制实现两个label切换图片的关联
- MFC实现 银行转帐|ATM|图书管理|等对话框界面跳转的问题
- J2ME高级界面实现页面之间的跳转
- AutoHotkey界面语言切换与检测升级的简单实现 [转]
- QT图形界面实现系统监控状态(未完成)
- 利用INI文件实现界面无闪烁多语言切换
- Qt局部界面切换(qt 2.x)
- 37个Ajax和CSS实现的Tab选项卡切换效果界面