彩票走势图

「Qt Widget中文示例指南」如何实现一个旋转框(一)

翻译|使用教程|编辑:龚雪|2024-08-01 10:17:26.077|阅读 16 次

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

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

相关链接:

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

旋转框示例展示了如何使用Qt 中可用的许多不同类型的旋转框,从简单的QSpinBox部件到更复杂的编辑器,如 部件。

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

「Qt Widget中文示例指南」如何实现一个旋转框

该示例包含一个Window类,用于显示Qt中可用的不同基于旋转框的小部件。

Window类定义

Window类继承了QWidget,并包含两个插槽,用于提供交互特性:

class Window : public QWidget
{
Q_OBJECT

public:
Window(QWidget *parent = nullptr);

public slots:
void changePrecision(int decimals);
void setFormatString(const QString &formatString);

private:
void createSpinBoxes();
void createDateTimeEdits();
void createDoubleSpinBoxes();

QDateTimeEdit *meetingEdit;
QDoubleSpinBox *doubleSpinBox;
QDoubleSpinBox *priceSpinBox;
QDoubleSpinBox *scaleSpinBox;
QGroupBox *spinBoxesGroup;
QGroupBox *editsGroup;
QGroupBox *doubleSpinBoxesGroup;
QLabel *meetingLabel;
QSpinBox *groupSeparatorSpinBox;
QDoubleSpinBox *groupSeparatorSpinBox_d;
};

私有函数用于在窗口中设置每种类型的旋转框,我们使用成员变量来跟踪各种小部件,以便在需要时重新配置它们。

Window类实现

构造函数只需调用私有函数来设置示例中使用的不同类型spin box,并将每个组放在一个布局中:

Window::Window(QWidget *parent)
: QWidget(parent)
{
createSpinBoxes();
createDateTimeEdits();
createDoubleSpinBoxes();

QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBoxesGroup);
layout->addWidget(editsGroup);
layout->addWidget(doubleSpinBoxesGroup);
setLayout(layout);

setWindowTitle(tr("Spin Boxes"));
}

我们使用布局来管理window子部件的排列,并更改window标题。

createSpinBoxes() 函数构造了一个 ,并在其中放置了三个 小部件,这些小部件带有描述性标签,以指示它们期望的输入类型。

void Window::createSpinBoxes()
{
spinBoxesGroup = new QGroupBox(tr("Spinboxes"));

QLabel *integerLabel = new QLabel(tr("Enter a value between "
"%1 and %2:").arg(-20).arg(20));
QSpinBox *integerSpinBox = new QSpinBox;
integerSpinBox->setRange(-20, 20);
integerSpinBox->setSingleStep(1);
integerSpinBox->setValue(0);

第一个旋转框显示了使用的最简单方法,它接受从-20到20的值,当前值可以通过箭头按钮或上下键增加或减少1,默认值为0。

第二个旋转框使用更大的步长,并显示后缀,以提供有关数字所代表的数据类型的更多信息:

QLabel *zoomLabel = new QLabel(tr("Enter a zoom value between "
"%1 and %2:").arg(0).arg(1000));
QSpinBox *zoomSpinBox = new QSpinBox;
zoomSpinBox->setRange(0, 1000);
zoomSpinBox->setSingleStep(10);
zoomSpinBox->setSuffix("%");
zoomSpinBox->setSpecialValueText(tr("Automatic"));
zoomSpinBox->setValue(100);

此旋转框还显示一个特殊值,替代为其定义的最小值,这意味着它永远不会显示0%,但当选择最小值时将显示自动。

第三个旋转框显示了如何使用前缀:

QLabel *priceLabel = new QLabel(tr("Enter a price between "
"%1 and %2:").arg(0).arg(999));
QSpinBox *priceSpinBox = new QSpinBox;
priceSpinBox->setRange(0, 999);
priceSpinBox->setSingleStep(1);
priceSpinBox->setPrefix("$");
priceSpinBox->setValue(99);

为简单起见,我们展示一个带有前缀而没有后缀的旋转框,也可以同时使用这两种方法。

groupSeparatorSpinBox = new QSpinBox;
groupSeparatorSpinBox->setRange(-99999999, 99999999);
groupSeparatorSpinBox->setValue(1000);
groupSeparatorSpinBox->setGroupSeparatorShown(true);
QCheckBox *groupSeparatorChkBox = new QCheckBox;
groupSeparatorChkBox->setText(tr("Show group separator"));
groupSeparatorChkBox->setChecked(true);
connect(groupSeparatorChkBox, &QCheckBox::toggled, groupSeparatorSpinBox,
&QSpinBox::setGroupSeparatorShown);

QLabel *hexLabel = new QLabel(tr("Enter a value between "
"%1 and %2:").arg('-' + QString::number(31, 16)).arg(QString::number(31, 16)));
QSpinBox *hexSpinBox = new QSpinBox;
hexSpinBox->setRange(-31, 31);
hexSpinBox->setSingleStep(1);
hexSpinBox->setValue(0);
hexSpinBox->setDisplayIntegerBase(16);

QVBoxLayout *spinBoxLayout = new QVBoxLayout;
spinBoxLayout->addWidget(integerLabel);
spinBoxLayout->addWidget(integerSpinBox);
spinBoxLayout->addWidget(zoomLabel);
spinBoxLayout->addWidget(zoomSpinBox);
spinBoxLayout->addWidget(priceLabel);
spinBoxLayout->addWidget(priceSpinBox);
spinBoxLayout->addWidget(hexLabel);
spinBoxLayout->addWidget(hexSpinBox);
spinBoxLayout->addWidget(groupSeparatorChkBox);
spinBoxLayout->addWidget(groupSeparatorSpinBox);
spinBoxesGroup->setLayout(spinBoxLayout);
}

该函数的其余部分为组框设置布局,并将每个小部件放置在其中。

未完待续,更多内容敬请期待......

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