qt不同窗口之间的切换

学习Qt有一段时间了,今天算是空闲,总结一下之前过的多窗口切换的实现过程。因为自己在学这个的时候在网上查找过一些资料,感觉都没有完全把过程讲清楚,对于初学者来说是一种痛苦(老是缺这缺那得,估计都是大神给的,哈哈!)。今贴出自己之前完成过的一个多窗口切换的实例,希望能给初学Qt的同学们一些启发,少走一些弯路。共勉!

    实例实现的功能:实现多个窗口之间的切换。一个主窗口(Widget)两个对话框(Dialog),Dialog1和Dialog2。当点击主窗口的按键时,主窗口自动影藏,同时弹出Dialog1对话框。当点击Dialog1中的按键时,弹出Dialog2对话框。当关闭dialog1对话框时,主窗口又显示出来了。

具体实现过程如下:

1、新建一个主工程MultiDialog,类名为Widget,基类为QWidget。然后一直下一步就行。

1.2、建立第一个对话框

1.2.1 新建->Qt->Qt Designer Form Class->Dialog without Buttons->Dialog1

1.3 在主窗口中添加部件

    选中界面文件,双击widget.ui,在主窗口中添加一个label和一个个PushButton,并分别修改对象名称和显示内容:



1.4 添加槽函数,实现主窗口与Dialog1的连接。

    这时在头文件widget.h中自动添加槽的声明:在界面文件中双击widget.ui—>选中PushButton右击—>go to slot—>clicked(),这是自动添加了槽函数的声明,在widget.cpp中填写槽函数的实现:

添加了#include ”dialog1“ ,槽函数的定义,以及定义了dialog1对象:


在widget.cpp中填充槽函数的实现:


1.5 点击运行可以得到如下结果,当点击PushButton时,进入Dialog1对话框:

       

2、建立第二个对话框

2.1 新建->Qt->Qt Designer Form Class->Dialog without Buttons->Dialog2


2.2 双击界面文件中的dialog2.ui,在对话框中加入一个label,并修改对象名称和显示内容


2.3  添加槽函数,建立Dialog1与Dialog2的连接

在dialog1.h中自动添加槽的声明:双击dialog1.ui—>右击PushButton—>go to slot—>clicked()。这时自动添加了槽函数的声明,并在dialog1.cpp中填充槽函数的实现。



    然后在dialog1.cpp中,填充槽函数的实现:


这时点击运行就能出现如下的结果:

点击dialog1中PushButton时会进入Dialog2对话框:


其中的main函数为:


3. 实现点击dialog1对话框中的exit按钮回跳到主窗口显示。

在dialog1.ui中添加一个Label,修改对象名称和显示内容:

在widget.cpp中添加的代码如下(可以对比上文中的widget.cpp):


    在dialog1.cpp中添加连接eixt与dialog2的函数:


    修改过后,当我们点击dialog1中的exit时,便可以跳转到主窗口显示咯得意。我们便可以实现各个窗口之间的来回切换了。

    由于Dialog2没有实现其他的功能,因此dialog2.h与dialog2.cpp并未做修改。


     到目前为止,实现多窗口切换的实例已经完成了。通过这个实例启发,我们可以实现更多的功能,比如实现某个用遥控器控制的菜单界面的UI界面设计。这个实例只是抛砖引玉,更高级一些的界面设计还得我们发散思维,多去尝试。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Qt中,要实现全屏窗口的左右切换,可以使用QStackedWidget和QHBoxLayout来实现。 首先,在Qt窗口界面文件中,添加一个QStackedWidget控件,并设置其布局为水平布局(QHBoxLayout)。然后,向QStackedWidget控件中添加需要切换窗口界面,可以使用QWidget或者其他自定义的窗口类。 接下来,在控制程序的代码中,我们可以使用QPushButton或者其他按钮控件来触发切换操作。在按钮的点击事件中,我们可以通过设置QStackedWidget中当前显示的窗口的索引来切换界面。 具体的实现步骤如下: 1. 在窗口界面文件中,添加一个QStackedWidget控件,并设置为水平布局。 ```cpp QHBoxLayout *layout = new QHBoxLayout(this); QStackedWidget *stackedWidget = new QStackedWidget(this); layout->addWidget(stackedWidget); ``` 2. 向QStackedWidget控件中添加需要切换窗口界面。 ```cpp QWidget *window1 = new QWidget; QWidget *window2 = new QWidget; stackedWidget->addWidget(window1); stackedWidget->addWidget(window2); ``` 3. 在控制程序的代码中,设置按钮的点击事件,通过设置QStackedWidget中当前显示的窗口的索引来实现切换操作。 ```cpp QPushButton *leftButton = new QPushButton("左切换"); QPushButton *rightButton = new QPushButton("右切换"); connect(leftButton, &QPushButton::clicked, [=]() { int currentIndex = stackedWidget->currentIndex(); if (currentIndex == 0) { stackedWidget->setCurrentIndex(stackedWidget->count() - 1); // 切换到最后一个窗口 } else { stackedWidget->setCurrentIndex(currentIndex - 1); // 切换到前一个窗口 } }); connect(rightButton, &QPushButton::clicked, [=]() { int currentIndex = stackedWidget->currentIndex(); if (currentIndex == stackedWidget->count() - 1) { stackedWidget->setCurrentIndex(0); // 切换到第一个窗口 } else { stackedWidget->setCurrentIndex(currentIndex + 1); // 切换到下一个窗口 } }); ``` 这样,当点击左切换按钮时,会切换到前一个窗口;当点击右切换按钮时,会切换到下一个窗口。这样就实现了全屏窗口的左右切换功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值