当前位置: 首页 > news >正文

QTtricks

QDockWidget

QDockWidget在Qt中是一个可以停靠的面板,通常用于侧边栏或者可停靠的工具窗口。

QToolBar

在 Qt Designer 中,QToolBar 并不是通过直接拖拽添加的,而是 内置于 QMainWindow 中,注意主窗口类型是否正确,因为只有QMainWindow才有内置工具栏。

set add

setAllowedAreas 限制面板只能停靠在指定区域(如左侧或右侧),避免被拖到其他位置合并。
setMinimumWidth 防止面板因窗口缩放而过小,导致内容挤压或布局错乱。

setWidget 向面板内部添加实际内容(如树控件、表单等)。
addDockWidget 将面板正式添加到主窗口的指定区域。
sketchDock->setWidget(sketchToolBar);
addDockWidget(Qt::LeftDockWidgetArea, sketchDock);

Dock->setWidget(drawingToolBar)
setMenuBar(menuBar);

addToolBar(Qt::TopToolBarArea, quickAccessToolBar)

ToolBar->addWidget(viewCombo);
statusBar()->showMessage(“保存成功”, 2000);

保存和恢复布局

在关闭并重新打开应用时,之前的浮动状态和位置能够保留。可以通过QSettings来实现,记录各个DockWidget的位置和状态。

// 保存布局状态
void MainWindow::saveLayout() {QSettings settings;settings.setValue("mainWindowState", saveState());
}// 加载布局状态
void MainWindow::loadLayout() {QSettings settings;restoreState(settings.value("mainWindowState").toByteArray());
}// 关闭事件保存布局
void MainWindow::closeEvent(QCloseEvent *event) {saveLayout();QMainWindow::closeEvent(event);
}// settingsdialog.cpp
void SettingsDialog::loadSettings() {QSettings settings;ui->checkEnable->setChecked(settings.value("EnableFeature", false).toBool());ui->comboMode->setCurrentIndex(settings.value("Mode", 0).toInt());
}
void SettingsDialog::saveSettings() {QSettings settings;settings.setValue("EnableFeature", ui->checkEnable->isChecked());settings.setValue("Mode", ui->comboMode->currentIndex());
}

可视化设计与代码协作

操作流程可视化设计代码增强逻辑
创建工具栏拖拽控件并设置对象名通过 findChild 获取控件实例
设置交互逻辑添加动作(Action)绑定信号槽(如 connect)
布局控制调整位置和尺寸使用 splitDockWidget 动态分割区域
样式美化在 Designer 中设置样式表通过代码动态加载 CSS 文件

模态与非模态

如果设置窗口是非模态的,用户可能在主窗口和设置窗口之间来回切换,这时候需要确保数据的同步和窗口的生命周期管理。
模态对话框,用户必须先处理设置窗口才能返回主窗口,这可能更符合某些场景的需求。
模态对话框使用exec()方法实现模态阻塞,show() 实现非模态。

相关文章:

  • 神经网络开发实战:从零基础到企业级应用(含CNN、RNN、BP网络代码详解)
  • 开源PDF解析工具Marker深度解析
  • Python-numpy中ndarray对象创建,数据类型,基本属性
  • 2025年企业Radius认证服务器市场深度调研:中小企业身份安全投入产出比最优解
  • 基于CBOW模型的词向量训练实战:从原理到PyTorch实现
  • MySQL基础关键_008_DDL 和 DML(一)
  • 杰理-AC696音箱linein无法插入检测
  • 【C++】grpc(一):安装
  • 探索神经符号系统:医疗AI的范式化进程分析
  • Cursor报错Your request has been blocked解决方案
  • SpringBoot集成CXF框架,实现WebService
  • 数据结构中 数组、链表、图的概念
  • 从围棋到LabVIEW:快速入门与长期精通
  • Python中的客户端和服务端交互的基本内容
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的流量变现路径创新研究
  • Web前端开发:Flex布局(弹性布局)
  • 物联网之对接MQTT最佳实践
  • 基于Docker的MongoDB环境搭建:从零开始的完整实践指南
  • pta作业中有启发性的程序题
  • pytorch checkpointing
  • 厦大历史系教授林汀水辞世,曾参编《中国历史地图集》
  • 视觉周刊|劳动开创未来
  • 伊朗港口爆炸最新事故调查报告公布,2名管理人员被捕
  • 新加坡国会选举投票抽样结果公布,执政党已获超半数议席
  • “仿佛一场追星粉丝会”,老铺黄金完成国内头部商业中心全覆盖,品牌化后下一步怎么走?
  • 客流持续高位运行,长三角铁路计划增开153列旅客列车