QT的多界面StackedWidge布局

什么是StackedWidge布局

       在实际应用中,经常会遇到如图中这类页面,点击左侧按钮或菜单,右侧区域(红色框内)会切换不同页面的内容,在QT中,就可以使用StackedWidge来实现这种布局。

        简单来说,StackedWidge布局,是一个用于管理和显示多个页面的控件。所有页面堆叠在一起,但一次只显示其中一个,常用于用户需要在不同的视图或页面之间来回切换。

界面设置StackedWidge

        这里仍然是先创建一个空白的页面(QWidget),然后在控件列表中找到 Stacked Widget

拖拽到页面中,随意拖拽调整下大小,此时我们可以看到右侧页面中多了一个QStackedWidget控件,这个控件下默认增加了两个页面(QWidget)

        点击第一个页面(page),会切换至page层级,我们放一个label,标记为第一个页面,同样方式再点击第二个页面(page_2),放一个label和一个button进来,这样两个页面就设计好了

        点击 工具 --> 界面编辑器 --> 预览 看下效果

        默认展示第一个页面,右上角有两个一左一右的三角形,可以切换展示的页面

        点击向右的三角形,就会切换到第二个页面

代码实现StackedWidge

        我们来看用代码如何实现这个页面

1、打开一个空界面对应的 .cpp文件

2、按照图中,我们将页面的所有控件都创建好

3、先看下效果

        页面的大体布局是有了,但是我们发现现在还无法通过点击【第一个页面】【第二个页面】这两个按钮来切换右侧的页面,这里我们就需要使用到QT中非常关键的一个功能,信号和槽

4、如图,我们添加信号和槽,实现点击按钮切换展示页面的效果,这里先简单说一下信号和槽使用到的connect函数,后面会详细介绍

       connect函数有四个参数,从左至右依次是,信号发出者、发出的信号、信号接收者、接收到信号要做的事情,再对应代码中来看,就是触发button的clicke动作,stackedWidget设置当前展示页面的序号

5、再简单调整下页面样式,我们看下效果

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt中,可以使用布局来实现多界面开发布局是一种自动调整控件位置和大小的方式,可以确保界面在不同尺寸的窗口上保持一致的布局。 在构造函数中,可以使用垂直箱式布局(QVBoxLayout)来将按钮添加到界面中。首先创建两个按钮(okBtn和celBtn),并设置它们的文本。然后创建一个垂直箱式布局(layout),将两个按钮添加到布局中。最后,将布局设置为界面布局(setLayout(layout))。这样,两个按钮就会按照垂直方向排列在界面上。\[1\] 另外,在多界面开发中,有时需要将外部进程嵌入到Qt界面中。可以使用QProcess类来创建进程,并使用start()方法启动外部程序。然后,可以使用waitForFinished()方法等待进程执行完毕。接下来,可以使用FindWindow()函数根据类名和窗口名称查找外部窗口的句柄(WId)。然后,使用QWindow::fromWinId()方法将句柄转换为QWindow对象。如果成功获取到窗口对象,可以设置窗口的属性,例如窗口的标志和标题。最后,可以使用QWidget::createWindowContainer()方法将窗口对象嵌入到QWidget中,并将该QWidget添加到布局中。这样,外部窗口就会嵌入到Qt界面中。\[2\]\[3\] 总结起来,Qt布局可以用于实现多界面开发,可以使用垂直箱式布局将控件按照垂直方向排列。同时,可以使用QProcess类和相关方法将外部进程嵌入到Qt界面中。 #### 引用[.reference_title] - *1* [浅析 Qt 布局系统](https://blog.csdn.net/m0_73443478/article/details/127659975)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [多进程界面开发-Qt试玩儿](https://blog.csdn.net/delphigbg/article/details/128084973)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值