QT QPushButton跑进度条

主要用到qlineargradient,写以下CSS样式即可实现:

background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:0.5 rgba(255, 0, 0, 255), stop:0.6 rgba(255, 255, 255, 255), stop:1 rgba(255, 255, 255, 255));

其中,0-1,可以细化到不同的区域(0.1, 0.2, 0.3....),还可以更小,以分别对应进度条0-100

文件读取是一个耗时的操作,为了提高用户体验,可以在文件读取过程中显示一个进度条,告诉用户读取进度。下面是在 Qt 中实现文件读取进度条的基本步骤: 1. 在 MainWindow.ui 界面中添加一个 QProgressBar 控件和一个 QPushButton 控件。 2. 在 MainWindow.cpp 文件中添加一个槽函数,该函数用于处理当用户点击 QPushButton 控件时的事件。在槽函数中,使用 QFileDialog 类打开文件,并在读取文件时更新进度条。 ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QFile> #include <QFileDialog> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->progressBar->setRange(0, 100); // 设置进度条范围 ui->progressBar->setValue(0); // 设置进度条初始值为 0 connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::onButtonClicked); } void MainWindow::onButtonClicked() { QString file_name = QFileDialog::getOpenFileName(this, tr("Open File"), ".", tr("Text Files (*.txt)")); if (!file_name.isEmpty()) { QFile file(file_name); if (file.open(QIODevice::ReadOnly)) { qint64 file_size = file.size(); qint64 read_size = 0; char buffer[1024]; while (!file.atEnd()) { qint64 len = file.read(buffer, sizeof(buffer)); read_size += len; ui->progressBar->setValue((int)(read_size * 100 / file_size)); // 更新进度条 qApp->processEvents(); // 处理 UI 事件,避免界面冻结 } file.close(); } } } ``` 在上面的代码中,onButtonClicked() 槽函数会在用户点击 QPushButton 控件时被调用。该函数会使用 QFileDialog 类打开一个文件,然后读取文件的数据并更新进度条。在读取文件的过程中,使用 setValue() 函数更新进度条的值,同时使用 processEvents() 函数处理 UI 事件,避免界面冻结。 通过以上步骤,就可以在 Qt 中实现文件读取进度条了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值