Qt使用布局管理器实现扩展对话框
最近一直在忙项目,有段时间没写博客了;今天跟大家讲讲扩展对话框的实现;扩展对话框效果如下所示:
(1)初始界面:
(2)单击<More>按钮:
(3)再次单击<More>按钮:
这节主要讲解用布局管理器方式实现,下节讲解用手动进行部件定位的方式实现:
1、用Qt Creator新建一个QDialog的主窗口,然后使用Qt Designer往上面拖动一些基本部件即可,在这个例子中,我使用了一个进度条,一个文本标签,两个按钮,以及一个QListWidget;其中进度条表示任务的操作进度,文本标签则实时显示任务的操作描述,如正在进行CRC验证、正在写文件等,一个OK按钮用于关闭对话框,一个More按钮用于显示和隐藏QListWidget的高度部分;最后设计成的UI如下图所示:
下面就要对这些部件进行布局设置了;OK和More按钮使用水平布局,其中该布局中间再加上一个水平的Spacer,然后再对主对话框使用垂直布局即可。为了使OK按钮和More按钮更向里靠拢些,设置水平布局的layoutLeftMargin和layoutRightMargin属性值,我设置为20,布局结果如下图所示:
2、设置主对话框布局的大小约束为SetFixedSize;布局管理器的大小约束属性解释如下所示:
然后设置进度条的最小宽度即可。
3、 连接信号和槽函数
在OK按钮的槽函数中关掉该窗口;在More按钮的槽函数中对是否按下进行判断,如果按下了,就显示QListWidget,否则,就隐藏QListWidget;因为改变布局管理器中项后,布局管理器会重新计算布局信息。
4、 美化窗口
美化窗口我就不再讲解了,包括圆角窗口,窗口背景以及按钮样式等,请各位参考我用Qt实现360界面的例子。
我把二进制文件打包供下载,希望大家提出意见,有什么不对的地方望指教;下载地址为:文件下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构