当前位置: 首页 > 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() 实现非模态。

http://www.xdnf.cn/news/291223.html

相关文章:

  • 怎么看户型好不好?
  • 1. std::result_of是什么?为什么它出现?
  • 【计算机视觉】三维重建:tiny-cuda-nn:高性能神经网络推理与训练的CUDA加速库
  • 2025年中国光电子器件产业链分析
  • Linux系统中的时间同步服务
  • Qt天气预报系统绘制温度曲线
  • 2048游戏(含Python源码)
  • 【计算机视觉】3d人体重建:PIFu/PIFuHD:高精度三维人体数字化技术指南
  • [逆向工程]什么是“暗桩”
  • 【Java学习笔记】包
  • Redis ZSet 实现原理与跳表选择原因
  • Lombok 是什么?
  • Python字符串全解析:从基础操作到高级应用的技术指南
  • 36-校园反诈系统(小程序)
  • K8S node ARP 表爆满 如何优化
  • 【深度学习-Day 6】掌握 NumPy:ndarray 创建、索引、运算与性能优化指南
  • git上常用的12个月份对应的英语单词以及月份英语缩写形式
  • [machine learning] Transformer - Attention (三)
  • C++ 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • 2025流感疫苗指南+卫健委诊疗方案|高危人群防护+并发症处理 慢性肾脏病饮食指南2025卫健委版|低盐低磷食谱+中医调理+PDF 网盘下载 pdf下载
  • Scala day6(Class,field,Single Object)
  • EPSG:3857 和 EPSG:4326 的区别
  • 掌纹图像识别:解锁人类掌纹/生物识别的未来——技术解析与前沿数据集探索
  • 2025系统架构师---论软件的设计模式论文
  • Java按字节长度截取字符串指南
  • JVM——Java对象的内存布局
  • Hive安装与配置教程
  • 详讲viewer查看器
  • Astro Canvas 数据中心→设备一览大屏操作指南
  • 基于 HTML5 的贪吃蛇小游戏实现