QT5使用QStackedWidget实现同一窗口下多页面(会话窗口)切换

标签: QT QStackedWidget
9人阅读 评论(0) 收藏 举报
分类:

毕业设计需要用到上位机,选用QT5作为开发工具,本人记性比较差,怕以后又要用到的时候又造一遍轮子,还是记录下来为秒。

上位机需要是完成多个功能,这些功能分不同的会话窗口实现,而这些会话窗口又要在主窗口呈现出来。这里用到了QStackedWidget这个控件。我新建了两个widget窗口,分别放置了一个Label控件,以下就是效果图。



我创建了两个Widget窗口,分别叫FormComm和FormScripts,主窗口的就是默认的MainWindow。

下面开始教程:

1. 首先需要添加你需要的窗口,不管Widget还是Dialog都可以。然后绘制你的UI界面。




2. 要想在主窗口打开其他的窗口,就需要在主窗口将其他窗口实例化。我在mainwindow.h的MainWindow类下的private添加Widget窗口的指针,记得添加相应的头文件。



3. 在mainwindow.cpp里实例化子窗口。


4. 最后赋予主窗口里按钮相应的信号槽便可实现。


下面给出主要代码:

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "formcomm.h"
#include "formscripts.h"


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

private:
    Ui::MainWindow *ui;
    FormComm *FormComm_Page;//创建窗口页面指针
    FormScripts *FormScripts_Page;
};

#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"



MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    FormComm_Page = new FormComm(this);//实例化窗口页面
    FormScripts_Page = new FormScripts(this);

    ui->stackedWidget->addWidget(FormComm_Page);
    ui->stackedWidget->addWidget(FormScripts_Page);
    ui->stackedWidget->setCurrentWidget(FormComm_Page);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    ui->stackedWidget->setCurrentWidget(FormComm_Page);
}

void MainWindow::on_pushButton_2_clicked()
{
    ui->stackedWidget->setCurrentWidget(FormScripts_Page);
}

我个人比较喜欢结合QT Designer来制作软件,我不是专业的程序员,底子还是机械的底子,所以在编程上经过这么久的磨合期,能简单实现就简单实现,术业有专攻,还是把自己擅长的做好再来完善其他的比较明智。

查看评论

初学Qt——菜单栏QAction+ QstackedWidget堆栈窗体实现切换分页

QstackedWidget 堆栈窗体,具体不作详述,stackedWidget 主要实现效果类似与界面分页效果,主要常与QListWidget QtreeWidget QTableWidget等结合...
  • qq_31117007
  • qq_31117007
  • 2016-04-12 04:00:00
  • 3575

Qt5布局管理(三)——QStackedWidget堆栈窗口类

堆栈窗口类QStackedWidgetCode@github:https://github.com/LeeHDsniper/LearnQt/tree/master/CH303实例效果 如上图,堆栈窗...
  • LeeHDsniper
  • LeeHDsniper
  • 2016-04-05 23:39:45
  • 3829

qt中实现多窗口切换

qt提供了多种实现多窗口切换的框架,想QTabWidget,QStackedWidget,QDockWidget(也算是吧),这里说的“窗口切换”的意思是,在主界面上每次只显示一个窗口。系统自带的类使...
  • shanhujiao53
  • shanhujiao53
  • 2015-11-16 14:40:27
  • 3070

5-QT5多窗口切换以及所有对话框的实现

这里我要实现的是一个由多个窗口组成而且各个窗口之间可以切换的程序。 实现之前必须了解一些必备知识; 模态和非模态对话框的概念: 简单来说就是模态对话框,对话框之间相互不交互,例如退出提示框,而非模态对...
  • a3631568
  • a3631568
  • 2016-12-18 11:19:36
  • 5546

QT5中实现多窗口切换,并从子窗口返回数据

该程序的功能:主窗口里有两个button和ltextEdit,按下下一页button后弹出子窗口并隐藏主窗口,按下退出Button后退出程序。子窗口有文本框lineEdit和button,按下子窗口的...
  • weibo1230123
  • weibo1230123
  • 2018-01-20 18:59:28
  • 111

在winform中实现多窗口的使用 及切换

最近看过一个项目觉得很经典。 她  是JSP 来做的,估计玩这个技术的人都比较怀恋WINFORM 所以有做到楼上的效果个人认为她是这样实现的:整个大页面是个frame 为,其左边有菜单a, 右边是主要...
  • lovelxj
  • lovelxj
  • 2005-04-26 17:41:00
  • 4682

C# 系统应用之使用Pancel控件同一窗体切换页面

主要讲述如何使用Pancel控件实现类似于360安全卫士的点击图标窗体不变,但页面内容变换的功能及遇到的重叠Panel不能设置Visible(可见)问题.通过打开"视图->其他窗口->文档大纲"查看控...
  • Eastmount
  • Eastmount
  • 2014-03-18 15:57:49
  • 10023

Qt布局管理: 堆栈窗体QStackedWidget类(纯代码实现)

堆栈窗体QStackedWidget类是经常在应用程序中用到的,在实际应用中,堆栈窗体多与列表框QlistWidget和下拉列表框QCombobox配合使用。...
  • rl529014
  • rl529014
  • 2016-05-26 13:49:41
  • 2974

【Qt5开发及实例】5、布局管理之堆栈窗体QStackedWidget类

老规矩,给个目标实现以下: 代码展示, 首先创建一个项目,不要界面,选择基类是QDialog这个,后面名字的话随便改改 我的类名是:StackDlg 所以之后,只要在stackdlg.h...
  • cutter_point
  • cutter_point
  • 2014-12-21 20:05:28
  • 5271

SecureCrt 设置在同一窗口下打开会话

SecureCrt某个设置不合朕的心意,在打开一个新的连接时不是在同一个窗口下,它又新开了一个工作窗口,像下面这样,操作起来让人很不爽:解决方案:点击 File -&amp;gt; Connect I...
  • u012135425
  • u012135425
  • 2018-03-08 17:50:00
  • 188
    个人资料
    等级:
    访问量: 4168
    积分: 177
    排名: 99万+
    文章存档
    最新评论