Skip to content

Commit 14bc0a3

Browse files
committed
[重构ProgressBar组件并优化UI示例代码]: 全面升级ProgressBar为功能丰富的线性进度条控件,优化多个组件的UI实现逻辑,提升代码质量和用户体验
- **ProgressBar组件重构**: 将圆角进度条升级为功能完整的线性进度条控件,支持动画过渡、颜色定制、圆角控制、百分比显示等丰富特性,提供完整的信号系统和便捷操作方法 - **UI示例代码优化**: 重构Battery、CircularProgress、DashBoard等组件的示例代码,移除冗余的valueLabel文本更新逻辑,简化信号连接,提升代码可维护性 - **构建系统更新**: 将ProgressBar的CMake目标重命名为progress_bar,采用更规范的命名约定,确保项目构建一致性 - **文档和资源更新**: 更新README.md中的ProgressBar描述,删除旧版截图,添加新版功能说明和演示图片,准确反映组件特性 - **代码现代化**: 将头文件保护宏改为#pragma once,使用现代C++语法,改善代码结构和可读性
1 parent b3d882b commit 14bc0a3

11 files changed

Lines changed: 793 additions & 177 deletions

File tree

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -202,11 +202,14 @@ void ThreadedTcpServer::incomingConnection(qintptr socketDescriptor)
202202
- 提供密码验证和批量操作支持
203203
- <img src="src/PasswordLineEdit/images/password_line_edit.png" width="600" alt="密码输入框截图">
204204
205-
### [ProgressBar](src/ProgressBar/) - 圆角进度条
206-
207-
- 自定义样式进度条
208-
- QProgressBar 替代方案
209-
- <img src="src/ProgressBar/picture/ProgressBar.png" width="90%" alt="圆角进度条">
205+
### [ProgressBar](src/ProgressBar/) - 线性进度条控件
206+
207+
- 支持动画过渡效果,可自定义动画时长
208+
- 可自定义圆角半径,支持自动圆角计算
209+
- 支持百分比和数值两种显示模式
210+
- 提供丰富的颜色定制选项
211+
- 包含完整的信号系统和便捷操作方法
212+
- <img src="src/ProgressBar/images/progress_bar.png" width="500" alt="线性进度条控件截图">
210213
211214
### [ReactorServer](src/ReactorServer/) - Reactor 模式服务器
212215

src/Battery/mainwindow.cpp

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ MainWindow::MainWindow(QWidget *parent)
1010
auto *battery = new BatteryWidget(this);
1111

1212
// 创建数值控制
13-
auto *valueLabel = new QLabel(tr("Current value:"), this);
14-
1513
auto *valueSlider = new QSlider(Qt::Horizontal, this);
1614
valueSlider->setRange(0, 100);
1715
valueSlider->setValue(75);
@@ -75,7 +73,7 @@ MainWindow::MainWindow(QWidget *parent)
7573

7674
// 第一行:数值控制
7775
int row = 0;
78-
controlLayout->addWidget(valueLabel, row, 0);
76+
controlLayout->addWidget(new QLabel(tr("Current value:"), this), row, 0);
7977
controlLayout->addWidget(valueSlider, row, 1);
8078
controlLayout->addWidget(valueSpinBox, row, 2);
8179

@@ -267,21 +265,15 @@ MainWindow::MainWindow(QWidget *parent)
267265
});
268266

269267
// 电池信号连接 - 更新UI状态
270-
connect(battery,
271-
&BatteryWidget::valueChanged,
272-
this,
273-
[valueLabel, valueSlider, valueSpinBox](int value) {
274-
valueLabel->setText(tr("Current value: %1%").arg(value));
275-
276-
// 阻塞信号避免循环
277-
valueSlider->blockSignals(true);
278-
valueSlider->setValue(value);
279-
valueSlider->blockSignals(false);
268+
connect(battery, &BatteryWidget::valueChanged, this, [valueSlider, valueSpinBox](int value) {
269+
valueSlider->blockSignals(true);
270+
valueSlider->setValue(value);
271+
valueSlider->blockSignals(false);
280272

281-
valueSpinBox->blockSignals(true);
282-
valueSpinBox->setValue(value);
283-
valueSpinBox->blockSignals(false);
284-
});
273+
valueSpinBox->blockSignals(true);
274+
valueSpinBox->setValue(value);
275+
valueSpinBox->blockSignals(false);
276+
});
285277

286278
connect(battery, &BatteryWidget::valueIncreased, this, [](int newValue) {
287279
qDebug() << "Value increased to:" << newValue;
@@ -332,7 +324,6 @@ MainWindow::MainWindow(QWidget *parent)
332324

333325
// 初始化状态
334326
battery->setValue(75);
335-
valueLabel->setText(tr("Current value: 75%"));
336327
}
337328

338329
MainWindow::~MainWindow() {}

src/CircularProgress/mainwindow.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ MainWindow::MainWindow(QWidget *parent)
1010
auto *circularProgress = new CircularProgress("Loading Progress", this);
1111

1212
// 创建数值控制
13-
auto *valueLabel = new QLabel(tr("Current value:"), this);
14-
valueLabel->setAlignment(Qt::AlignCenter);
15-
1613
auto *valueSlider = new QSlider(Qt::Horizontal, this);
1714
valueSlider->setRange(0, 100);
1815
valueSlider->setValue(0);
@@ -94,7 +91,7 @@ MainWindow::MainWindow(QWidget *parent)
9491
auto *valueGroup = new QGroupBox(tr("Value settings"), this);
9592
auto *valueControlLayout = new QGridLayout(valueGroup);
9693

97-
valueControlLayout->addWidget(valueLabel, 0, 0);
94+
valueControlLayout->addWidget(new QLabel(tr("Current value:"), this), 0, 0);
9895
valueControlLayout->addWidget(valueSlider, 0, 1);
9996
valueControlLayout->addWidget(valueSpinBox, 0, 2);
10097

@@ -429,9 +426,7 @@ MainWindow::MainWindow(QWidget *parent)
429426
connect(circularProgress,
430427
&CircularProgress::valueChanged,
431428
this,
432-
[valueLabel, valueSlider, valueSpinBox](double value) {
433-
valueLabel->setText(tr("Current value: %1").arg(value, 0, 'f', 2));
434-
429+
[valueSlider, valueSpinBox](double value) {
435430
valueSlider->blockSignals(true);
436431
valueSlider->setValue(static_cast<int>(value));
437432
valueSlider->blockSignals(false);
@@ -466,7 +461,6 @@ MainWindow::MainWindow(QWidget *parent)
466461

467462
// 初始化状态
468463
circularProgress->setValue(0);
469-
valueLabel->setText(tr("Current value: 0.00"));
470464
}
471465

472466
MainWindow::~MainWindow() {}

src/DashBoard/mainwindow.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ MainWindow::MainWindow(QWidget *parent)
1010
auto *dashboard = new DashBoardWidget(this);
1111

1212
// 创建数值控制
13-
auto *valueLabel = new QLabel(tr("Current value:"), this);
14-
valueLabel->setAlignment(Qt::AlignCenter);
15-
1613
auto *valueSlider = new QSlider(Qt::Horizontal, this);
1714
valueSlider->setRange(0, 100);
1815
valueSlider->setValue(0);
@@ -106,7 +103,7 @@ MainWindow::MainWindow(QWidget *parent)
106103
auto *valueGroup = new QGroupBox(tr("Value settings"), this);
107104
auto *valueControlLayout = new QGridLayout(valueGroup);
108105

109-
valueControlLayout->addWidget(valueLabel, 0, 0);
106+
valueControlLayout->addWidget(new QLabel(tr("Current value:"), this), 0, 0);
110107
valueControlLayout->addWidget(valueSlider, 0, 1);
111108
valueControlLayout->addWidget(valueSpinBox, 0, 2);
112109

@@ -503,10 +500,7 @@ MainWindow::MainWindow(QWidget *parent)
503500
connect(dashboard,
504501
&DashBoardWidget::valueChanged,
505502
this,
506-
[valueLabel, valueSlider, valueSpinBox](double value) {
507-
valueLabel->setText(tr("Current value: %1").arg(value, 0, 'f', 2));
508-
509-
// 阻塞信号避免循环
503+
[valueSlider, valueSpinBox](double value) {
510504
valueSlider->blockSignals(true);
511505
valueSlider->setValue(static_cast<int>(value));
512506
valueSlider->blockSignals(false);
@@ -539,7 +533,6 @@ MainWindow::MainWindow(QWidget *parent)
539533

540534
// 初始化状态
541535
dashboard->setValue(0);
542-
valueLabel->setText(tr("Current value: 0.00"));
543536
}
544537

545538
MainWindow::~MainWindow() {}

src/ProgressBar/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
set(PROJECT_SOURCES main.cc mainwindow.cc mainwindow.hpp progressbar.hpp
22
progressbar.cc)
33

4-
qt_add_executable(ProgressBar ${PROJECT_SOURCES})
5-
target_link_libraries(ProgressBar PRIVATE Qt::Widgets)
4+
qt_add_executable(progress_bar ${PROJECT_SOURCES})
5+
target_link_libraries(progress_bar PRIVATE Qt::Widgets)
29.9 KB
Loading

0 commit comments

Comments
 (0)