- class QProgressDialog#
QProgressDialog 类提供对慢速操作进度的反馈。 更多…
概要#
属性#
autoClose属性- 是否通过 reset() 隐藏对话框autoReset属性- 进度对话框是否在 value() 等于 maximum() 时立即调用 reset()labelText属性- 标签的文本maximum属性- 进度条表示的最高值minimum属性- 进度条表示的最低值minimumDuration属性- 对话框出现前必须经过的时间value- 当前完成的进度量wasCanceled- 对话框是否被取消
方法#
def
__init__def
autoClosedef
autoResetdef
labelTextdef
maximumdef
minimumdef
minimumDurationdef
opendef
setAutoClosedef
setAutoResetdef
setBardef
setCancelButtondef
setLabeldef
valuedef
wasCanceled
槽函数#
def
canceldef
forceShowdef
resetdef
setLabelTextdef
setMaximumdef
setMinimum()def
setRange()def
setValue()
信号#
def
canceled()
注释
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您在翻译中发现问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式告知我们。
详细描述#
注意
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
进度对话框用于向用户提示操作将花费多长时间,并演示应用程序没有冻结。它还可以让用户有机会取消操作。
进度对话框的一个常见问题是难以知道何时使用它们;在不同硬件上操作所需的时间不同。
QProgressDialog为此问题提供了一个解决方案:它根据步骤时间估计操作所需时间,并且只有当估计时间超过minimumDuration()(默认为4秒)时才显示自己。使用
setMinimum()和setMaximum()或者构造函数设置操作中的“步骤”数量,然后随着操作进度调用setValue()。步骤数量可以任意选择。它可以是不变的文件数量,收到的字节数量,算法主循环迭代的次数,或其他合适的单位。进度从setMinimum()设置的值开始,当您使用setMaximum()设置的值作为参数调用setValue()时,进度对话框会显示操作已完成。操作结束时,对话框会自动重置并隐藏自己。使用
setAutoReset()和setAutoClose()可以更改这种行为。请注意,如果您设置了与当前value()相等的新最大值(使用setMaximum()或setRange()),对话框也无论如何都不会关闭。使用
QProgressDialog有两种方式:模态和无模态。与无模态的
QProgressDialog相比,模态的QProgressDialog对于程序员来说更易于使用。在循环中进行操作,在适当的时间调用setValue(),并使用wasCanceled()检查是否取消。例如progress = QProgressDialog("Copying files...", "Abort Copy", 0, numFiles, self) progress.setWindowModality(Qt.WindowModal) for i in range(0, numFiles): progress.setValue(i) if progress.wasCanceled(): break #... copy one file progress.setValue(numFiles)
无模态进度对话框适用于在后台进行的操作,用户能够与应用程序进行交互。此类操作通常是基于 QTimer(或 QObject::timerEvent())或 QSocketNotifier;或者在单独的线程中执行。在主窗口的状态栏中,一个
QProgressBar有时可以作为无模态进度对话框的替代品。您需要一个正在运行的事件循环,将
canceled()信号连接到停止操作的槽,并在适当的时间调用setValue()。例如# Operation constructor def __init__(self, parent): super().__init__(parent) self.steps = 0 pd = QProgressDialog("Operation in progress.", "Cancel", 0, 100) pd.canceled.connect(self.cancel) t = QTimer(self) t.timeout.connect(self.perform) t.start(0) def perform(self): pd.setValue(steps) #... perform one percent of the operation steps = steps + 1 if steps > pd.maximum(): t.stop() def cancel(self): t.stop() #... cleanup
在两种模式下,都可以通过使用
setLabel()、setBar()和setCancelButton()替换子控件来自定义进度对话框,具体请参阅《setLabel()`、《setBar()`和《setCancelButton()`的说明。
另请参阅
注释
如果使用
from __feature__ import true_property,则可以直接使用属性,否则通过访问函数。- property autoCloseᅟ: bool#
此属性表示对话框是否会在调用
reset()时被隐藏。默认值为true。
另请参阅
- property autoResetᅟ: bool#
如果使用这个属性,并且当进度条值等于其最大值时,表示进度对话框将立即调用
reset()。默认值为true。
另请参阅
- property labelTextᅟ: str#
此属性保存标签的文本。
默认文本为空字符串。
- property maximumᅟ: int#
该属性保存进度条能够表示的最高值。
默认值为100。
另请参阅
- 访问函数
- 属性 minimum: int#
此属性表示进度条的最低值。
默认值为0。
另请参阅
- 访问函数
- 属性 minimumDuration: int#
此属性存储对话框出现之前必须经过的时间。
如果任务的预期持续时间小于minimumDuration,对话框将不会出现。这可以防止对话框弹出显示快速完成的任务。对于预期将超过minimumDuration的任务,对话框会在minimumDuration时间后弹出,或者在设置任何进度后立即弹出。
如果设置为0,则一旦设置任何进度,对话框就总是显示。默认为4000毫秒。
- 属性 value: int#
此属性表示当前的进度量。
要使进度对话框按预期工作,您应将此属性最初设置为
minimum,最后设置为maximum;您可以在之间调用setValue()任意次。注意
如果进度对话框是模态的(参见
QProgressDialog),则setValue()调用QCoreApplication::processEvents(),因此请务必注意这不会导致您的代码发生不希望的重入。例如,不要在paintEvent中使用QProgressDialog!另请参阅
minimummaximum- 访问函数
- 属性 wasCanceled: bool#
此属性表示对话框是否被取消。
- 访问函数
- __init__(labelText, cancelButtonText, minimum, maximum[, parent=None[, flags=Qt.WindowFlags()]])#
- 参数:
labelText – 字符串
cancelButtonText – 字符串
minimum – 整数
maximum – 整数
parent –
QWidgetflags –
WindowType组合
构造一个进度对话框。
labelText是提醒用户进度条内容的文本。cancelButtonText是取消按钮上要显示的文本。如果传入 QString(),则不会显示取消按钮。minimum和maximum是此进度对话框所显示的步骤数。例如,如果操作是检查 50 个文件,则最小值将是 0,最大值将是 50。在检查第一个文件之前,调用setValue(0)。随着每个文件的处理,调用setValue(1),setValue(2),等等,最后在检查最后一个文件后调用setValue(50)。parent参数是对话框的父部件。将父部件parent和部件标志f传递给QDialog()构造函数。- __init__([parent=None[, flags=Qt.WindowFlags()]])
- 参数:
parent –
QWidgetflags –
WindowType组合
构造一个进度对话框。
默认设置
标签文本为空。
取消按钮文本为(已翻译)“取消”。
最小值是 0;
最大值是 100
parent参数是对话框的父部件。将部件标志f传递给QDialog()构造函数。- autoClose()#
- 返回类型:
bool
另请参阅
autoClose 属性的获取器。
- autoReset()#
- 返回类型:
bool
另请参阅
autoReset 属性的获取器。
- cancel()#
重置进度对话框。直到进度对话框被重置,
wasCanceled()变为 true。进度对话框变为隐藏。- canceled()#
在点击取消按钮时发出此信号。默认情况下,它连接到
cancel()插槽。另请参阅
- forceShow()#
在算法开始后,如果对话框仍然隐藏,并且
minimumDuration毫秒已过,则显示对话框。另请参阅
- labelText()#
- 返回类型:
str
另请参阅
labelText 属性的获取器。
- maximum()#
- 返回类型:
int
另请参阅
maximum 属性的获取器。
- minimum()#
- 返回类型:
int
另请参阅
minimum 属性的获取器。
- minimumDuration()#
- 返回类型:
int
另请参阅
属性
minimumDuration的获取器。打开对话框并将其
canceled()信号连接到由receiver和member指定的槽。当对话框关闭时,信号将断开与槽的连接。
- reset()#
重置进度对话框。如果
autoClose()为真,则进度对话框将变为隐藏。- setAutoClose(close)#
- 参数:
close – 布尔值
另请参阅
属性
autoClose的设置器。- setAutoReset(reset)#
- 参数:
reset – 布尔值
另请参阅
属性
autoReset的设置器。- setBar(bar)#
- 参数:
bar –
QProgressBar
将进度条小部件设置为
bar。进度对话框会调整大小以适应。进度对话框将拥有bar进度条的所有权,当必要时将其删除,因此不要使用堆栈分配的进度条。- setCancelButton(button)#
- 参数:
按钮 –
QPushButton
将取消按钮设置为对勾按钮,
cancelButton。进度对话框将拥有此按钮,在必要时将删除它,因此不要传递堆栈上对象的地址,即使用new()创建按钮。如果传递的是None,则不会显示取消按钮。- setCancelButtonText(text)#
- 参数:
text – str
将取消按钮的文本设置为
cancelButtonText。如果将文本设置为QString(),则会隐藏并删除取消按钮。另请参阅
将标签设置为
label。进度对话框将调整大小以适应。标签成为进度对话框的所有者,在必要时将删除它,因此不要传递堆栈上对象的地址。另请参阅
- setLabelText(text)#
- 参数:
text – str
另请参阅
属性
labelText的设置器。属性
maximum的设置器。属性
minimum的设置器。- setMinimumDuration(ms)#
- 参数:
ms – int
另请参阅
属性
minimumDuration的设置器。- setRange(minimum, maximum)#
- 参数:
minimum – 整数
maximum – 整数
将进度对话框的最小和最大值分别设置为
minimum和maximum。如果
最大值小于最小值,则最小值成为唯一合法值。如果当前值超出新的范围,进度的对话框将使用
reset()重置。另请参阅
minimummaximum属性
value的设置器。- value()#
- 返回类型:
int
另请参阅
属性
value的获取器。- wasCanceled()#
- 返回类型:
bool
属性
wasCanceled的获取器。