彩票走势图

「Qt Widget中文示例指南」如何创建一个计算器?(三)

翻译|使用教程|编辑:龚雪|2023-12-19 10:30:38.603|阅读 20 次

概述:本文将为大家介绍Qt Widget的模拟计算器的示例,欢迎下载最新版组件体验~

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

相关链接:

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

本文将展示如何使用信号和槽来实现计算器小部件的功能,以及如何使用QGridLayout在网格中放置子小部件。在上文中(点击这里回顾>>),我们为大家介绍了Calculator类的定义和实现,接下来的内容将主要介绍计算器中Button类的定义和实现!持续关注我们,有更多实用示例介绍哦~

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

Button类定义

现在让我们来看看Button类:

class Button : public QToolButton
{
Q_OBJECT

public:
explicit Button(const QString &text, QWidget *parent = nullptr);

QSize sizeHint() const override;
};

Button类有一个方便的构造函数,它接受一个文本标签和一个父小部件,并且它重新实现了() ,以在文本周围提供比更多的空间。

Button类实现
Button::Button(const QString &text, QWidget *parent)
: QToolButton(parent)
{
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
setText(text);
}

按钮的外观由计算器小部件的布局通过布局子小部件的大小和大小策略决定,在构造函数中调用setSizePolicy()函数确保按钮将水平展开来填充所有空间;默认情况下,s不会展开来填充可用空间。如果没有这个调用,同一列中的不同按钮将具有不同的宽度。

QSize Button::sizeHint() const
{
QSize size = QToolButton::sizeHint();
size.rheight() += 20;
size.rwidth() = qMax(size.width(), size.height());
return size;
}

在sizeHint()中,我们尝试返回一个适合大多数按钮的大小。重用基类(QToolButton)的大小提示,但以以下方式修改它:

  • 将20添加到尺寸提示的高度组件中。
  • 让大小提示的宽度分量至少和高度分量一样多。

这确保了对于大多数字体、数字和操作符按钮将是方形的,不会截断Backspace、Clear和Clear All按钮上的文本。

下面的屏幕截图显示了如果我们没有在构造函数中将水平大小策略设置为QSizePolicy:: expand,并且没有重新实现QWidget::sizeHint(),那么Calculator小部件将是什么样子。

Qt Widget中文示例指南图集
带有默认大小策略和大小提示的计算器示例
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 主题!

DevExpress企业定制服务

标签:

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

文章转载自:慧都网

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP