废话不多说,先来看一下最终的界面效果

一、引言
在上一篇博客中,我们完成了图片处理工具的基础框架,实现了拖拽加载、亮度调节和角度旋转功能。本文将聚焦界面布局重构、对比度调节功能扩展以及多线程性能优化,进一步提升工具的实用性和用户体验。所有界面元素均通过手动代码布局实现,展现 Qt 框架在复杂交互场景下的灵活性。
二、界面布局重构:从垂直布局到左右分栏的交互升级
1. 左右分栏架构设计
采用QDockWidget实现主界面的左右布局:
- 左侧控制区:包含亮度、对比度、角度调节控件,使用
QGroupBox分组管理,提升功能可读性 - 右侧预览区:嵌入
QScrollArea实现图片滚动浏览,支持大尺寸图片显示
// MainWindow.cpp 初始化界面
void MainWindow::initUI() {
// 右侧图片预览区(带滚动条)
previewWidget = new QWidget(this);
QVBoxLayout *previewLayout = new QVBoxLayout(previewWidget);
imageLabel = new QLabel(this);
imageLabel->setAlignment(Qt::AlignCenter);
QScrollArea *scrollArea = new QScrollArea(this);
scrollArea->setWidget(imageLabel);
scrollArea->setWidgetResizable(true); // 图片自适应滚动区域
previewLayout->addWidget(scrollArea);
// 左侧控制区(使用QDockWidget实现可停靠面板)
m_effectsWidget = new EffectsWidget(this);
QDockWidget *dockWidget = new QDockWidget(tr("图片处理"), this);
dockWidget->setWidget(m_effectsWidget);
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
dockWidget->setMinimumWidth(200); // 防止控件挤压变形
}
2. 手动布局的优势与实现细节
(1)控件分组与层次结构
// EffectsWidget.cpp 角度调节分组
QGroupBox *angleGroup = new QGroupBox(tr("角度调节"));
QVBoxLayout *angleGroupLayout = new QVBoxLayout;
// 按钮行
QHBoxLayout *angleButtonLayout = new QHBoxLayout;
clockwiseButton = new QPushButton

最低0.47元/天 解锁文章
6125

被折叠的 条评论
为什么被折叠?



