Qt滑块示例

本文介绍Qt框架中滑块控件的使用,包括QSlider、QDial和QRadioButton。示例展示了不同类型的滑块以及如何通过信号和槽同步小部件的行为。同时详细解释了滑块的外观、方向、键绑定和反转功能的设置。
摘要由CSDN通过智能技术生成

滑块示例显示了如何使用 Qt: 和 中可用的不同类型的滑块。

Qt提供了三种类型的类似滑块的小部件:和 。它们都继承了 的大部分功能,理论上可以在应用程序中相互替换,因为差异只涉及它们的外观和感觉。此示例显示了它们的外观、工作方式以及如何通过其属性操纵它们的行为和外观。

该示例还演示了如何使用信号和插槽来同步两个或多个小部件的行为。

滑块示例的屏幕截图

滑块示例由两个类组成:

  • SlidersGroup是一个自定义小部件。它结合了 a 、a 和 a 。
  • Window是组合 a 和 a 的主要小部件。在此示例中,提供了两个小部件的堆栈。包含几个控制类似滑块的小部件的行为的小部件。SlidersGroup

首先我们将复习课程,然后我们将看看课程。WindowSlidersGroup

窗口类定义

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#ffff55">class</span> <span style="color:#4f9d08">Window</span> <span style="color:#ffffff">:</span> <span style="color:#ffff55">public</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a>
<span style="color:#ffffff">{</span><span style="color:#ffffff">
    Q_OBJECT

</span><span style="color:#ffff55">public</span><span style="color:#ffffff">:</span>
    <span style="color:#4f9d08">Window</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">nullptr</span><span style="color:#ffffff">);</span>

<span style="color:#ffff55">private</span><span style="color:#ffffff">:</span>
    <span style="color:#ffff55">void</span><span style="color:#ffffff"> createControls</span><span style="color:#ffffff">(</span><span style="color:#ffff55">const</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qstring.html" href="https://doc.qt.io/qt-6/qstring.html"><span style="color:#21be2b">QString</span></a> <span style="color:#ffffff">&</span><span style="color:#ffffff">title</span><span style="color:#ffffff">);</span>
    <span style="color:#ffff55">void</span><span style="color:#ffffff"> resizeEvent</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qresizeevent.html" href="https://doc.qt.io/qt-6/qresizeevent.html"><span style="color:#21be2b">QResizeEvent</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">e</span><span style="color:#ffffff">);</span>

    <span style="color:#4f9d08">SlidersGroup</span> <span style="color:#ffffff">*</span><span style="color:#ffffff">horizontalSliders</span><span style="color:#ffffff">;</span>
    <span style="color:#4f9d08">SlidersGroup</span> <span style="color:#ffffff">*</span><span style="color:#ffffff">verticalSliders</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qstackedwidget.html" href="https://doc.qt.io/qt-6/qstackedwidget.html"><span style="color:#21be2b">QStackedWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">stackedWidget</span><span style="color:#ffffff">;</span>

    <a data-cke-saved-href="https://doc.qt.io/qt-6/qgroupbox.html" href="https://doc.qt.io/qt-6/qgroupbox.html"><span style="color:#21be2b">QGroupBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">controlsGroup</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qlabel.html" href="https://doc.qt.io/qt-6/qlabel.html"><span style="color:#21be2b">QLabel</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">minimumLabel</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qlabel.html" href="https://doc.qt.io/qt-6/qlabel.html"><span style="color:#21be2b">QLabel</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">maximumLabel</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qlabel.html" href="https://doc.qt.io/qt-6/qlabel.html"><span style="color:#21be2b">QLabel</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">valueLabel</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qcheckbox.html" href="https://doc.qt.io/qt-6/qcheckbox.html"><span style="color:#21be2b">QCheckBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">invertedAppearance</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qcheckbox.html" href="https://doc.qt.io/qt-6/qcheckbox.html"><span style="color:#21be2b">QCheckBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">invertedKeyBindings</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qspinbox.html" href="https://doc.qt.io/qt-6/qspinbox.html"><span style="color:#21be2b">QSpinBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">minimumSpinBox</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qspinbox.html" href="https://doc.qt.io/qt-6/qspinbox.html"><span style="color:#21be2b">QSpinBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">maximumSpinBox</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qspinbox.html" href="https://doc.qt.io/qt-6/qspinbox.html"><span style="color:#21be2b">QSpinBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">valueSpinBox</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qcombobox.html" href="https://doc.qt.io/qt-6/qcombobox.html"><span style="color:#21be2b">QComboBox</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">orientationCombo</span><span style="color:#ffffff">;</span>
    <a data-cke-saved-href="https://doc.qt.io/qt-6/qgridlayout.html" href="https://doc.qt.io/qt-6/qgridlayout.html"><span style="color:#21be2b">QGridLayout</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">layout</span><span style="color:#ffffff">;</span>
    <span style="color:#ffff55">double</span><span style="color:#ffffff"> oldAspectRatio</span><span style="color:#ffffff">;</span>
<span style="color:#ffffff">};</span></span></span></span>

该类继承自 。它显示滑块小部件,并允许用户设置其最小值、最大值和当前值,并自定义其外观、键绑定和方向。我们使用私有函数来创建提供这些控制机制的小部件,并将它们连接到滑块小部件。WindowcreateControls()

窗口类实现

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#4f9d08">Window</span><span style="color:#ffffff">::</span><span style="color:#4f9d08">Window</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a> <span style="color:#ffffff">*</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
    <span style="color:#ffffff">:</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qwidget.html" href="https://doc.qt.io/qt-6/qwidget.html"><span style="color:#21be2b">QWidget</span></a><span style="color:#ffffff">(</span><span style="color:#ffffff">parent</span><span style="color:#ffffff">)</span>
<span style="color:#ffffff">{</span><span style="color:#ffffff">
    horizontalSliders </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">new</span> <span style="color:#4f9d08">SlidersGroup</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qt.html" href="https://doc.qt.io/qt-6/qt.html"><span style="color:#21be2b">Qt</span></a><span style="color:#ffffff">::</span><span style="color:#4f9d08">Horizontal</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> tr</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"Horizontal"</span><span style="color:#ffffff">));</span><span style="color:#ffffff">
    verticalSliders </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">new</span> <span style="color:#4f9d08">SlidersGroup</span><span style="color:#ffffff">(</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qt.html" href="https://doc.qt.io/qt-6/qt.html"><span style="color:#21be2b">Qt</span></a><span style="color:#ffffff">::</span><span style="color:#4f9d08">Vertical</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> tr</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"Vertical"</span><span style="color:#ffffff">));</span><span style="color:#ffffff">

    stackedWidget </span><span style="color:#ffffff">=</span> <span style="color:#ffff55">new</span> <a data-cke-saved-href="https://doc.qt.io/qt-6/qstackedwidget.html" href="https://doc.qt.io/qt-6/qstackedwidget.html"><span style="color:#21be2b">QStackedWidget</span></a><span style="color:#ffffff">;</span><span style="color:#ffffff">
    stackedWidget</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">horizontalSliders</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    stackedWidget</span><span style="color:#ffffff">-</span><span style="color:#ffffff">></span><span style="color:#ffffff">addWidget</span><span style="color:#ffffff">(</span><span style="color:#ffffff">verticalSliders</span><span style="color:#ffffff">);</span><span style="color:#ffffff">

    createControls</span><span style="color:#ffffff">(</span><span style="color:#ffffff">tr</span><span style="color:#ffffff">(</span><span style="color:#aaaaaa">"Controls"</span><span style="color:#ffffff">));</span></span></span></span>

在构造函数中,我们首先创建两个水平和垂直显示滑块小部件的小部件,并将它们添加到 .提供一堆小部件,其中只有顶部小部件可见。通过我们创建从控制小部件到 的连接,使用户能够在滑块小部件的水平和垂直方向之间进行选择。其余的控制机制由相同的函数调用实现。SlidersGroupcreateControls()

<span style="color:#404244"><span style="background-color:#3a4055"><span style="color:#ffffff"><span style="color:#ffffff">    connect</span><span style="color:#ffffff">(</span><span style="color:#ffffff">horizontalSliders</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><span style="color:#4f9d08">SlidersGroup</span><span style="color:#ffffff">::</span><span style="color:#ffffff">valueChanged</span><span style="color:#ffffff">,</span><span style="color:#ffffff">
            verticalSliders</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><span style="color:#4f9d08">SlidersGroup</span><span style="color:#ffffff">::</span><span style="color:#ffffff">setValue</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    connect</span><span style="color:#ffffff">(</span><span style="color:#ffffff">verticalSliders</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><span style="color:#4f9d08">SlidersGroup</span><span style="color:#ffffff">::</span><span style="color:#ffffff">valueChanged</span><span style="color:#ffffff">,</span><span style="color:#ffffff">
            valueSpinBox</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qspinbox.html" href="https://doc.qt.io/qt-6/qspinbox.html"><span style="color:#21be2b">QSpinBox</span></a><span style="color:#ffffff">::</span><span style="color:#ffffff">setValue</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
    connect</span><span style="color:#ffffff">(</span><span style="color:#ffffff">valueSpinBox</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><a data-cke-saved-href="https://doc.qt.io/qt-6/qspinbox.html" href="https://doc.qt.io/qt-6/qspinbox.html"><span style="color:#21be2b">QSpinBox</span></a><span style="color:#ffffff">::</span><span style="color:#ffffff">valueChanged</span><span style="color:#ffffff">,</span><span style="color:#ffffff">
            horizontalSliders</span><span style="color:#ffffff">,</span> <span style="color:#ffffff">&</span><sp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

亭台六七座

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

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

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

打赏作者

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

抵扣说明:

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

余额充值