3.QSlider和QProgressBar组件
-
滑动输入组件
-
QSlider
-
QScrollBar
-
-
进度条显示组件
-
QProgressBar
-
QSlider和QScrollBar组件都是从QAbstractSlider类继承而来的、其属性如下:
| 属性 | 描述 |
|---|---|
| minimum | 最小值 |
| maximum | 最大值 |
| singleStep | 单步长 |
| pageStep | 按键PgUp和PgDn时的步长 |
| value | 当前值 |
| sliderPosition | 滑块的位置,若tracking属性设置为True,该值等于value |
| tracking | sliderPosition的值是否与value相同 |
| orientation | 方向,可以设置为水平或垂直,其取值: Qt.Horizontal 表示水平 Qt.Vertical 表示垂直 |
| invertedAppearance | 显示方式是否反向,若设置为False,水平的Slider由左向右数值逐渐增大 |
| invertedControls | 反向按键控制,若设置为True,则按键PgUp或PgDn调整的数值方向相反 |
QSlider专有的属性:
| 属性 | 描述 |
|---|---|
| tickPosition | 标尺刻度的显示位置,取值: QSlider.NoTicks 不显示刻度 QSlider.TicksBothSides 标尺两侧都显示刻度 QSlider.TicksAbove 标尺上方显示刻度 QSlider.TicksBelow 标尺下方显示刻度 QSlider.TicksLeft 标尺左侧显示刻度 QSlider.TicksRight 标尺右侧显示刻度TICKiNTERVAL |
| tickInterval | 标尺刻度之间的间隔值,若设置为0,会在singleStep和pageStep之间自动选择 |
QSlider和QScrollBar组件的常用信号
| 信号 | 描述 |
|---|---|
| valueChanged(int) | 在滑块改变当前值时发射的信号 |
QProgressBar的常用属性:
| 属性 | 描述 |
|---|---|
| minimum | 最小值 |
| maximum | 最大值 |
| value | 当前值 |
| textVisable | 是否显示文字,文字一般是百分比表示的进度 |
| orientation | 显示方向 |
| format | 显示文字的格式,“%p%”显示百分比(默认),“%v”显示当前值,“%m”显示总步数。 |
下面通过一个示例来演示以上三个组件的使用方法,界面如下:

实现功能:当Slider或ScrollBar的当前值改变时,都将设置ProgressBar的当前值;下方的复选框和单选按钮可以多ProgressBar进行相应的设置。
属性设置表:
| objectName | 属性 |
|---|---|
| horizontalSlider | minimum=0 maximum=100 |
| horizontalScrollBar | minimum=0 maximum=100 |
| progressBar | minimum=0 maximum=100 |
| checkBoxText | text="显示文本" |
| checkBoxInverted | text="反向显示" |
| radioButtonP | text="以百分比显示" |
| radioButtonV | text="以当前值显示" |
| radioButtonM | text="以总步数显示" |
代码如下:
# coding: utf-8
import sys
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import pyqtSlot
from ui_widget import Ui_Widget
class QAppWidget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.__ui = Ui_Widget()
self.__ui.setupUi(self)
self.__ui.horizontalSlider.valueChanged.connect(self.do_changedValue)
self.__ui.horizontalScrollBar.valueChanged.connect(self.do_changedValue)
def do_changedValue(self, val):
self.__ui.progressBar.setValue(val)
@pyqtSlot(bool)
def on_checkBoxText_clicked(self, checked):
self.__ui.progressBar.setTextVisible(checked)
@pyqtSlot(bool)
def on_checkBoxInverted_clicked(self, checked):
self.__ui.progressBar.setInvertedAppearance(checked)
def on_radioButtonP_clicked(self):
self.__ui.progressBar.setFormat('%p%')
def on_radioButtonV_clicked(self):
self.__ui.progressBar.setFormat('%v')
def on_radioButtonM_clicked(self):
self.__ui.progressBar.setFormat('%m')
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = QAppWidget()
widget.show()
sys.exit(app.exec_())
运行结果:


本文介绍了Qt库中QSlider和QScrollBar组件的用法,它们作为滑动输入控件,具有minimum、maximum、singleStep等属性。QProgressBar用于展示进度,支持设置显示方向、格式和是否显示文本。文中通过一个实例展示了这三个组件如何联动,并通过复选框和单选按钮实现不同设置。示例中,当Slider或ScrollBar的值改变时,ProgressBar的值随之更新,同时提供了切换显示文本、反向显示及进度显示方式的功能。
5600

被折叠的 条评论
为什么被折叠?



