样式表
background-color: qlineargradient(spread:reflect, x1:0.999896, y1:0.494136, x2:1, y2:1, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255, 255));
border: 1px groove rgb(232, 232, 232);
border-radius: 20px;
exec()
: 以模态方式运行对话框,阻塞其它窗口,直到该对话框关闭。show()
: 以非模态方式显示对话框,不会阻塞其它窗口。accept()
: 以接受的方式关闭对话框,通常与确定按钮关联。reject()
: 以拒绝的方式关闭对话框,通常与取消按钮关联void QDialog::done(int result);
result
: 这个参数是一个整数,用于指定对话框的返回值。这个值通常是 QDialog::Accepted
或 QDialog::Rejected
,分别对应对话框的“接受”和“拒绝”操作,但也可以是其他自定义的整数值。
函数行为:
done(int result)
时,它首先会设置对话框的返回值。done
会发出 finished()
信号,并传递 result
参数。QDialog
是通过 exec()
方法以模态方式显示的,exec()
将返回 result
值。void setWindowOpacity(qreal level);
level
参数是一个 qreal
(通常是 double
的别名),取值范围从 0.0
到 1.0
,其中 0.0
表示完全透明,1.0
表示完全不透明。
void QEventLoop::processEvents(QEventLoop::ProcessEventsFlags flags = AllEvents);
flags
: 这是一个可选参数,其类型为 QEventLoop::ProcessEventsFlags
。这个枚举类型定义了不同的标志,用于指定 processEvents()
方法应该处理哪些类型的事件。标志的默认值是 AllEvents
,表示处理所有类型的事件。其它可能的值包括但不限于 ExcludeUserInputEvents
, ExcludeSocketNotifiers
, 和 WaitForMoreEvents
等。
setValue(int value)
:设置当前进度值。setMinimum(int min)
和 setMaximum(int max)
:设置进度条的最小值和最大值。setOrientation(Qt::Orientation orientation)
:设置进度条的方向(水平或垂直)。setFormat(const QString &format)
:设置进度条上显示的文本格式。TestPro.h
TestPro.cpp
#pragma once
#include
#include
class TestPro : public QThread
{
Q_OBJECT
public:
TestPro()=default;
TestPro(QObject *parent);
~TestPro();
signals:
void setPos(int pos);
protected:
void run();
};
#include "TestPro.h"
TestPro::TestPro(QObject *parent)
: QThread(parent)
{
}
TestPro::~TestPro()
{}
void TestPro::run() {
//模拟做事
for (int i = 0; i <= 100; i++) {
setPos(i);
msleep(100);
}
}
QtWidgetsApplication11.h
#pragma once
#include
#include "ui_QtWidgetsApplication11.h"
class QtWidgetsApplication11 : public QDialog
{
Q_OBJECT
public:
QtWidgetsApplication11(QWidget *parent = nullptr);
~QtWidgetsApplication11();
private:
Ui::QtWidgetsApplication11Class ui;
};
#pragma once
#include
#include "ui_Pro.h"
class Pro : public QDialog
{
Q_OBJECT
public:
Pro(QWidget *parent = nullptr);
~Pro();
public slots:
void setPos(int pos);
private:
Ui::ProClass ui;
};
#include "Pro.h"
#include
Pro::Pro(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
}
Pro::~Pro()
{}
void Pro::setPos(int pos) {
ui.progressBar->setValue(pos);
if (pos == 100) {
for (int i = 100; i > 0; i--) {
this->setWindowOpacity((double)i / 100.0);
QThread::msleep(10);
QEventLoop loop;
loop.processEvents();
}
this->close();
}
}
#include "QtWidgetsApplication11.h"
#include
#include"Pro.h"
#include"TestPro.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Pro p;
TestPro tp;
QObject::connect(&tp, SIGNAL(setPos(int)),&p,SLOT(setPos(int)));
tp.start();
p.exec();
QtWidgetsApplication11 w;
w.show();
return a.exec();
}
main.cpp