Qt之QDial选择器

举报
人才程序员 发表于 2023/07/22 19:21:19 2023/07/22
【摘要】 @TOC 前言Qt是一种流行的跨平台的C++ GUI应用程序开发框架,用于构建图形用户界面(GUI)和其他桌面应用程序。QDial是Qt框架中的一个小部件,用于创建旋转式的拨号器。本文将介绍如何使用QDial进行基本的GUI应用程序开发,包括QDial的主要特性和方法,以及如何将其添加到应用程序的用户界面中。 一、QDial是什么QDial很像大家在射击手游中的移动键。如下图所示:接下来,我...

@TOC


前言

Qt是一种流行的跨平台的C++ GUI应用程序开发框架,用于构建图形用户界面(GUI)和其他桌面应用程序。QDial是Qt框架中的一个小部件,用于创建旋转式的拨号器。本文将介绍如何使用QDial进行基本的GUI应用程序开发,包括QDial的主要特性和方法,以及如何将其添加到应用程序的用户界面中。


一、QDial是什么

QDial很像大家在射击手游中的移动键。如下图所示:
在这里插入图片描述
接下来,我将带大家来学习QDial

二、操作api

  • 构造函数:
QDial(QWidget *parent = nullptr):构造一个 QDial 对象,并指定其父级窗口。
  • 值设置和获取:
void setValue(int value):设置 QDial 的当前值。
int value() const:获取 QDial 的当前值。
  • 范围设置和获取:
void setRange(int minValue, int maxValue):设置 QDial 的取值范围。
int minimum() const:获取 QDial 的最小值。
int maximum() const:获取 QDial 的最大值。
  • 步长设置和获取:
void setSingleStep(int step):设置 QDial 的步长。
int singleStep() const:获取 QDial 的步长。
  • 外观设置和获取:
void setNotchesVisible(bool visible):设置是否显示 QDial 上的刻度线。
bool notchesVisible() const:检查是否显示 QDial 上的刻度线。
  • 返回 QDial 上刻度线的大小,
    刻度线的大小指的是刻度线的长度。
int notchSize() const
  • 返回 QDial 上刻度线的目标位置。
    刻度线的目标位置是一个介于 0.0 和 1.0 之间的小数值,表示刻度线在 QDial 上的相对位置。
qreal notchTarget() const
  • 设置 QDial 上刻度线的目标位置。
    target 参数是一个介于 0.0 和 1.0 之间的小数值,表示刻度线在 QDial 上的相对位置。
void setNotchTarget(double target)
  • 返回一个布尔值,指示 QDial 是否启用环绕模式。
    如果环绕模式启用,旋转旋钮会在最小值和最大值之间循环;如果禁用,旋钮会在达到最小值或最大值时停止旋转。
bool wrapping() const

信号与槽

由于QDial继承于QAbstractSlider,所以QDial的信号与槽是和QAbstractSlider是一样的!

  • 当范围值改变时
void rangeChanged(int min, int max)
  • 当滑动时
void sliderMoved(int value)
  • 当滑块被按下时
void sliderPressed()
  • 当滑块释放时
void sliderReleased()
  • 当值变化时
 void valueChanged(int value)

示例代码

因为其很简单,所以我并未创建Widget类,直接使用QWidget

#include <QApplication>
#include <QDial>
#include <QVBoxLayout>
#include <QDebug>
#include <QWidgt>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // 创建主窗口及布局
    Widget window;
    QVBoxLayout layout(&window);

    // 创建 QDial
    QDial dial;
    
    // 设置 QDial 的取值范围和步长
    dial.setRange(0, 100);
    dial.setSingleStep(1);
    
    // 设置刻度线可见
    dial.setNotchesVisible(true);
    
    // 设置刻度线的目标位置
    dial.setNotchTarget(0.2);
    
    // 设置环绕模式启用
    dial.setWrapping(true);
    
    // 连接 QDial 的 valueChanged 信号到输出当前值
    QObject::connect(&dial, &QDial::valueChanged, [](int value){
        qDebug() << "Value:" << value;
    });

    // 将 QDial 添加到布局中
    layout.addWidget(&dial);

    // 显示窗口
    window.show();

    return app.exec();
}

上述示例代码创建了一个简单的窗口应用程序,其中包含一个 QDial 控件。在该示例中,我们将 QDial 的取值范围设置为 0 到 100,并将步长设置为 1。我们还通过设置 setNotchesVisible(true) 使刻度线可见,并使用 setNotchTarget(0.2) 设置刻度线的目标位置为 0.2。然后,我们使用 setWrapping(true) 启用了环绕模式。最后,我们通过连接 valueChanged 信号来输出 QDial 的当前值。

您可以根据需要在此示例代码的基础上进行修改和扩展,以适应您的实际需求。

总结

最后,要记住Qt提供了许多其他用于交互和用户界面设计的工具和组件。通过结合使用不同的Qt元素,您可以创建出富有创意和独特的用户界面,满足各种应用程序的需求。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。