QDialog

发布时间:2024年01月01日

属性方法

样式表

  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::AcceptedQDialog::Rejected,分别对应对话框的“接受”和“拒绝”操作,但也可以是其他自定义的整数值。

函数行为:

  • 当调用 done(int result) 时,它首先会设置对话框的返回值。
  • 然后,它会关闭对话框。如果对话框是模态的(即阻止其它窗口接收输入),这个动作会释放任何模态循环。
  • 在关闭对话框之前,done 会发出 finished() 信号,并传递 result 参数。
  • 如果 QDialog 是通过 exec() 方法以模态方式显示的,exec() 将返回 result 值。

void setWindowOpacity(qreal level);

level 参数是一个 qreal(通常是 double 的别名),取值范围从 0.01.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_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 <QtWidgets/QDialog>
#include "ui_QtWidgetsApplication11.h"

class QtWidgetsApplication11 : public QDialog
{
    Q_OBJECT

public:
    QtWidgetsApplication11(QWidget *parent = nullptr);
    ~QtWidgetsApplication11();

private:
    Ui::QtWidgetsApplication11Class ui;
};
#pragma once

#include <QDialog>
#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<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

文章来源:https://blog.csdn.net/b1169909203/article/details/135320531
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。