46- 输入和显示-滑块控件QSlider

滑块控件QSlider

QSlider小部件提供垂直或水平滑块。

from PySide6.QtWidgets import QSlider

QSlider(orientation: PySide6.QtCore.Qt.Orientation, parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)
QSlider(parent: Union[PySide6.QtWidgets.QWidget, NoneType] = None)

用给定的父级构造垂直滑块。
用给定的父级构造一个滑块。方向参数确定滑块是水平还是垂直; 有效值是垂直和水平。

滑块控件QSlider官方描述

../../_images/windows-slider.png

滑块是用于控制有界值的经典小部件。它允许用户沿着水平或垂直凹槽移动滑动手柄,并将手柄的位置转换为合法范围内的整数值。

QSlider本身的功能很少;大部分功能都在QAbstractSlider中。最有用的函数是setValue,用于将滑块直接设置为某个值;triggerAction模拟点击的效果对快捷键很有用;setSingleStep,setPageStep设置步骤;以及setMinimum和setMaximum来定义滚动条的范围。

QSlider提供了控制tickmarks的方法。您可以使用setTickPosition来指示您想要的tickmarks所在的位置,使用setTick Interval来表示您想要的数量。可以分别使用tickPosition和tickInterval函数查询当前设置的刻度位置和间隔。
QSlider继承了一套全面的信号:

SignalDescription
valueChanged()当滑块的值发生更改时发出。tracking确定该信号是否在用户交互过程中发出。
sliderPressed()当用户开始拖动滑块时发出。
sliderMoved()当用户拖动滑块时发出。
sliderReleased()当用户释放滑块时发出。

QSlider只提供整数范围。请注意,尽管QSlider可以处理非常大的数字,但用户很难在非常大的范围内准确使用滑块。
滑块接受Tab上的焦点,并提供鼠标滚轮和键盘界面。键盘界面如下:

  • 向左/向右移动水平滑块一步。
  • 向上/向下移动垂直滑块一步。
  • PageUp向上移动一页。
  • PageDown向下移动一页。
  • 原点移动到起点最小值。
  • 末端移动到末端最大值。

滑块控件QSlider属性

属性描述功能访问
tickInterval: int此属性保存记号之间的间隔。
这是一个值间隔,而不是像素间隔。如果为0,则滑块将在singleStep和pageStep之间进行选择。
默认值为0。
tickInterval ()

setTickInterval (ti)
tickPosition: TickPosition此属性保存此滑块的tickmark位置。
有效值由TickPosition enum描述。
默认值为NoTicks。
tickPosition ()

setTickPosition (position)

滑块控件QSlider方法

  • PySide6.QtWidgets.QSlider.TickPosition

    此枚举指定相对于滑块的凹槽和用户移动的手柄要绘制的刻度线。

    ConstantDescription
    QSlider.NoTicks不要画任何刻度线。
    QSlider.TicksBothSides在凹槽的两侧绘制刻度线。
    QSlider.TicksAbove在 (水平) 滑块上方绘制刻度线
    QSlider.TicksBelow在 (水平) 滑块下方绘制刻度线
    QSlider.TicksLeft在 (垂直) 滑块的左侧绘制刻度线
    QSlider.TicksRight在 (垂直) 滑块的右侧绘制刻度线
方法描述
initStyleOption(self, option: PySide6.QtWidgets.QStyleOptionSlider)使用此QSlider中的值初始化选项。当子类需要QStyleOptionSlider,但不想自己填写所有信息时,此方法对子类很有用。
setTickInterval(self, ti: int)属性tickInterval的设置器。
setTickPosition(self, position: PySide6.QtWidgets.QSlider.TickPosition)属性tickPosition设置
tickInterval(self) -> int获取属性tickInterval
tickPosition(self) -> PySide6.QtWidgets.QSlider.TickPosition获取属性tickPosition

QSlider 例子

image-20230319025744592

# -*- coding: UTF-8 -*-
# File date: Hi_2023/3/15 0:57
# File_name: 05-QSlider 例子.py


import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *


class SliderDemo(QWidget):
    def __init__(self,parent=None):
        super(SliderDemo,self).__init__(parent)
        self.setWindowTitle("QSlider 例子")
        self.resize(300,100)

        layout = QVBoxLayout()
        self.label = QLabel("Hello Qt for Python")
        self.label.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.label)

        # 水平滑块
        self.slider_horizon = QSlider(Qt.Horizontal)
        self.slider_horizon.setMinimum(10)
        self.slider_horizon.setMaximum(50)
        self.slider_horizon.setSingleStep(3)
        self.slider_horizon.setPageStep(10)
        self.slider_horizon.setValue(20)
        self.slider_horizon.setTickPosition(QSlider.TicksBelow)
        self.slider_horizon.setTickInterval(5)
        layout.addWidget(self.slider_horizon)

        # 垂直滑块
        self.slider_vertical = QSlider(Qt.Vertical)
        self.slider_vertical.setMinimum(5)
        self.slider_vertical.setMaximum(25)
        self.slider_vertical.setSingleStep(1)
        self.slider_vertical.setPageStep(5)
        self.slider_vertical.setValue(15)
        self.slider_vertical.setTickPosition(QSlider.TicksRight)
        self.slider_vertical.setTickInterval(5)
        self.slider_vertical.setMinimumHeight(100)
        layout.addWidget(self.slider_vertical)

        # 连接信号槽
        self.slider_horizon.valueChanged.connect(lambda: self.valuechange(self.slider_horizon))
        self.slider_vertical.valueChanged.connect(lambda: self.valuechange(self.slider_vertical))

        self.setLayout(layout)

    def valuechange(self,slider):
        size = slider.value()
        self.label.setText('选中大小:%d'% size)
        self.label.setFont(QFont("Arial",size))


if __name__ =='__main__':
    app = QApplication(sys.argv)
    demo = SliderDemo()
    demo.show()
    sys.exit(app.exec())

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Qt中使用QSlider时,可以通过一些简单的步骤来实现在滑块的上方显示当前值。 首先,我们需要在Qt设计师中将一个QSlider控件放置在窗口中。确保将QSlider的名称设为slider,并根据需要设置最小值、最大值和初始值。 接下来,我们需要在代码中使用一个QLabel控件显示滑块的当前值。在类的构造函数中创建一个QLabel实例,并将其名称设为label。然后,我们可以使用QSlider的valueChanged信号来更新label的文本。 具体代码如下所示: ``` #include <QtWidgets> class MyWidget : public QWidget { Q_OBJECT public: MyWidget(QWidget *parent = nullptr) : QWidget(parent) { // 创建一个垂直布局管理器 QVBoxLayout *layout = new QVBoxLayout(this); // 创建一个QSlider控件并设置最小值、最大值和初始值 slider = new QSlider(Qt::Horizontal, this); slider->setMinimum(0); slider->setMaximum(100); slider->setValue(50); // 创建一个QLabel控件用于显示滑块的当前值 label = new QLabel(QString::number(slider->value()), this); // 将滑块和标签控件添加到布局中 layout->addWidget(slider); layout->addWidget(label); // 连接滑块的valueChanged信号到更新标签文本的槽函数 connect(slider, &QSlider::valueChanged, this, &MyWidget::updateLabel); } private slots: void updateLabel(int value) { // 根据滑块的当前值更新标签的文本 label->setText(QString::number(value)); } private: QSlider *slider; QLabel *label; }; int main(int argc, char *argv[]) { QApplication a(argc, argv); MyWidget widget; widget.show(); return a.exec(); } ``` 通过以上步骤,我们就可以在滑块的上方显示当前值。每当滑块的值发生改变时,标签的文本也会相应地更新。 ### 回答2: 在Qt中,使用QSlider控件来创建滑块是非常常见的。如果需要在滑块上方显示当前值,我们可以通过以下步骤实现: 1. 创建QSlider控件,并设置好滑块的范围和初始值。 ```cpp QSlider *slider = new QSlider(Qt::Horizontal); slider->setMinimum(0); slider->setMaximum(100); slider->setValue(50); ``` 2. 创建一个QLabel控件,用来显示当前值。 ```cpp QLabel *valueLabel = new QLabel(QString::number(slider->value())); ``` 3. 使用布局管理器将滑块和值标签放在一起。 ```cpp QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(slider); layout->addWidget(valueLabel); ``` 4. 创建一个槽函数,当滑块的值改变时,更新值标签的显示。 ```cpp QObject::connect(slider, &QSlider::valueChanged, [=](int value){ valueLabel->setText(QString::number(value)); }); ``` 通过以上步骤,我们可以实现在滑块上方显示当前值的效果。当滑块的值发生改变时,值标签会自动更新显示当前的值。可以根据需要对控件的样式和布局进行调整,以满足具体的界面需求。 ### 回答3: Qt的QSlider类是一个滑块控件,可以用于在一定范围内调节值。默认情况下,滑块只会显示一个滑块头,并没有显示当前的值。如果希望在滑块上方显示当前的值,我们可以使用以下方法: 首先,我们可以使用QSlider的valueChanged信号来捕捉滑块值的变化。例如,我们可以在窗口的构造函数中连接该信号到一个自定义的槽函数,代码如下: ``` connect(ui->slider,SIGNAL(valueChanged(int)),this,SLOT(onSliderValueChanged(int))); ``` 然后,我们在槽函数中可以更新一个QLabel控件显示当前的值。例如,我们可以在窗口类中添加一个QLabel控件,并在槽函数中更新其显示的文本,代码如下: ``` void MainWindow::onSliderValueChanged(int value) { ui->label->setText(QString("当前值:%1").arg(value)); } ``` 最后,我们将该QLabel控件放置在滑块上方的位置,并设置合适的样式和布局。例如,我们可以使用QVBoxLayout来将QSlider和QLabel添加到同一个垂直布局中,以保证它们能够正确显示在一起。 通过以上步骤,我们就可以在滑块上方显示当前的值了。每当滑块的值发生变化时,QLabel控件的文本就会更新为最新的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日,当挖目相待

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值