属性方法
样式表
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;
QDialog 的常用方法:
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
等。
ProcessBar常用方法:
setValue(int value)
:设置当前进度值。setMinimum(int min)
和setMaximum(int max)
:设置进度条的最小值和最大值。setOrientation(Qt::Orientation orientation)
:设置进度条的方向(水平或垂直)。setFormat(const QString &format)
:设置进度条上显示的文本格式。
进度条
TestPro.h
TestPro.cpp
#pragma once
#include<qthread.h>
#include <QObject>class TestPro : public QThread
{Q_OBJECTpublic: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 <QtWidgets/QDialog>
#include "ui_QtWidgetsApplication11.h"class QtWidgetsApplication11 : public QDialog
{Q_OBJECTpublic:QtWidgetsApplication11(QWidget *parent = nullptr);~QtWidgetsApplication11();private:Ui::QtWidgetsApplication11Class ui;
};
#pragma once#include <QDialog>
#include "ui_Pro.h"class Pro : public QDialog
{Q_OBJECTpublic:Pro(QWidget *parent = nullptr);~Pro();
public slots:void setPos(int pos);private:Ui::ProClass ui;
};
#include "Pro.h"
#include<qthread.h>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 <QtWidgets/QApplication>
#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