彩票走势图

「Qt Widget中文示例指南」如何实现一个滑动条(二)

翻译|使用教程|编辑:龚雪|2024-07-11 14:55:20.870|阅读 14 次

概述:本文将为大家介绍如何使用Qt Widget小部件如何实现一个滑动条示例,欢迎下载最新版组件体验~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Qt 是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

滑动条示例展示了如何使用Qt中可用的不同类型的滑动条:, 和 。

Qt提供了三种类似滑动条的小部件:QSlider、QScrollBar和QDial,它们都继承了QAbstractSlider的大部分功能,并且理论上可以在应用程序中相互替换,因为差异只涉及它们的外观和样式。这个例子展示了它们是什么样子的,它们是如何工作的,以及如何通过它们的属性来操纵它们的操作和外观。

Qt技术交流群:166830288      欢迎一起进群讨论

本示例还演示了如何使用信号和槽来同步两个或多个小部件的操作,以及如何覆盖resizeEvent()来实现响应式布局。

「Qt Widget中文示例指南」如何实现一个滑动条

在上文中(点击这里回顾>>),我们主要为大家介绍了Window类定义、Window类实现等,本文将继续介绍SlidersGroup类的定义和实现。

SlidersGroup类定义

class SlidersGroup : public QGroupBox
{
Q_OBJECT

public:
SlidersGroup(const QString &title, QWidget *parent = nullptr);

signals:
void valueChanged(int value);

public slots:
void setValue(int value);
void setMinimum(int value);
void setMaximum(int value);
void invertAppearance(bool invert);
void invertKeyBindings(bool invert);
void setOrientation(Qt::Orientation orientation);

private:
QSlider *slider;
QScrollBar *scrollBar;
QDial *dial;
QBoxLayout *slidersLayout;
};

SlidersGroup类继承自,它提供了一个框架和一个标题,并包含一个、一个 和一个。

我们提供了一个valueChanged()信号和一个公共setValue()槽,其功能与QAbstractSlider和QSpinBox中的相同。此外,我们还实现了其他几个公共槽来设置最小值和最大值,并反转滑块小部件的外观以及键绑定,并设置方向。

SlidersGroup类实现

SlidersGroup::SlidersGroup(const QString &title, QWidget *parent)
: QGroupBox(title, parent)
{
slider = new QSlider;
slider->setFocusPolicy(Qt::StrongFocus);
slider->setTickPosition(QSlider::TicksBothSides);
slider->setTickInterval(10);
slider->setSingleStep(1);

scrollBar = new QScrollBar;
scrollBar->setFocusPolicy(Qt::StrongFocus);

dial = new QDial;
dial->setFocusPolicy(Qt::StrongFocus);

首先我们创建具有适当属性的类似滑块的小部件,我们为每个小部件设置焦点策略。是一个枚举类型,它定义了小部件在获取键盘焦点方面可以具有的各种策略,策略意味着小部件通过tab和click来接受焦点。

connect(slider, &QSlider::valueChanged, scrollBar, &QScrollBar::setValue);
connect(scrollBar, &QScrollBar::valueChanged, dial, &QDial::setValue);
connect(dial, &QDial::valueChanged, slider, &QSlider::setValue);
connect(dial, &QDial::valueChanged, this, &SlidersGroup::valueChanged);

然后我们将这些小部件彼此连接起来,这样当其中一个小部件的当前值发生变化时,它们将保持同步。

将dial的valueChanged()信号连接到SlidersGroup的valueChanged()信号,来将更改的值通知应用程序中的其他小部件(即控件小部件)。

slidersLayout = new QBoxLayout(QBoxLayout::LeftToRight);
slidersLayout->addWidget(slider);
slidersLayout->addWidget(scrollBar);
slidersLayout->addWidget(dial);
setLayout(slidersLayout);
}

最后为组框内的滑块小部件创建布局,从滑块的水平排列开始。

void SlidersGroup::setValue(int value)
{
slider->setValue(value);
}

setValue()槽设置QSlider的值,我们不需要在QScrollBar和QDial小部件上显式地调用setValue(),因为QSlider将在其值发生变化时发出valueChanged()信号,从而触发多米诺骨牌效应。

void SlidersGroup::setMinimum(int value)
{
slider->setMinimum(value);
scrollBar->setMinimum(value);
dial->setMinimum(value);
}

void SlidersGroup::setMaximum(int value)
{
slider->setMaximum(value);
scrollBar->setMaximum(value);
dial->setMaximum(value);
}

setMinimum()和setMaximum()槽被Window类用来设置QSlider、QScrollBar和QDial小部件的范围。

void SlidersGroup::invertAppearance(bool invert)
{
slider->setInvertedAppearance(invert);
scrollBar->setInvertedAppearance(invert);
dial->setInvertedAppearance(invert);
}

void SlidersGroup::invertKeyBindings(bool invert)
{
slider->setInvertedControls(invert);
scrollBar->setInvertedControls(invert);
dial->setInvertedControls(invert);
}

invertAppearance()和invertKeyBindings()插槽控制子部件的和属性。

void SlidersGroup::setOrientation(Qt::Orientation orientation)
{
slidersLayout->setDirection(orientation == Qt::Horizontal
? QBoxLayout::TopToBottom
: QBoxLayout::LeftToRight);
scrollBar->setOrientation(orientation);
slider->setOrientation(orientation);
}

setOrientation()插槽控制布局的方向和滑块的方向,在水平组中,滑块具有水平方向,并且彼此堆叠在一起。在垂直组中,滑块具有垂直方向,并且彼此相邻布局。

Qt Widget组件推荐
  • QtitanRibbon - Ribbon UI组件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,QtitanRibbon致力于为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
  • QtitanChart - Qt类图表组件:是一个C ++库,代表一组控件,这些控件使您可以快速地为应用程序提供漂亮而丰富的图表。
  • QtitanDataGrid - Qt网格组件:提供了一套完整的标准 QTableView 函数和传统组件无法实现的独特功能。使您能够将不同来源的各类数据加载到一个快速、灵活且功能强大的可编辑网格中,支持排序、分组、报告、创建带状列、拖放按钮和许多其他方便的功能。
  • QtitanDocking:允许您像 Visual Studio 一样为您的伟大应用程序配备可停靠面板和可停靠工具栏。黑色、白色、蓝色调色板完全支持 Visual Studio 2019 主题!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP