「Qt Widget中文示例指南」如何创建一个计算器?(三) Qt是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写所有平台无差别运行更提供了几乎所有开发过程中需要用到的工具。如今Qt已被运用于超过70个行业、数千家企业支持数百万设备及应用。本文将展示如何使用信号和槽来实现计算器小部件的功能以及如何使用QGridLayout在网格中放置子小部件。在上文中我们为大家介绍了Calculator类的定义和实现接下来的内容将主要介绍计算器中Button类的定义和实现持续关注我们有更多实用示例介绍哦~现在让我们来看看Button类class Button : public QToolButton { Q_OBJECT public: explicit Button(const QString text, QWidget *parent nullptr); QSize sizeHint() const override; };Button类有一个方便的构造函数它接受一个文本标签和一个父小部件并且它重新实现了QWidget::sizeHint() 以在文本周围提供比QToolButton更多的空间。Button类实现Button::Button(const QString text, QWidget *parent) : QToolButton(parent) { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); setText(text); }按钮的外观由计算器小部件的布局通过布局子小部件的大小和大小策略决定在构造函数中调用setSizePolicy()函数确保按钮将水平展开来填充所有空间默认情况下QToolButtons不会展开来填充可用空间。如果没有这个调用同一列中的不同按钮将具有不同的宽度。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小部件将是什么样子。带有默认大小策略和大小提示的计算器示例