QLCDNumber Class
QLCDNumber 控件以类似 LCD 的数字形式显示数字。更多...
| 标题: | #include <QLCDNumber> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 继承自: | QFrame |
公共类型
| enum | Mode { Hex, Dec, Oct, Bin } |
| enum | SegmentStyle { Outline, Filled, Flat } |
属性
|
|
公共函数
| QLCDNumber(QWidget *parent = nullptr) | |
| QLCDNumber(uint numDigits, QWidget *parent = nullptr) | |
| virtual | ~QLCDNumber() |
| bool | checkOverflow(double num) const |
| bool | checkOverflow(int num) const |
| int | digitCount() const |
| int | intValue() const |
| QLCDNumber::Mode | mode() const |
| QLCDNumber::SegmentStyle | segmentStyle() const |
| void | setDigitCount(int numDigits) |
| void | setMode(QLCDNumber::Mode) |
| void | setSegmentStyle(QLCDNumber::SegmentStyle) |
| bool | smallDecimalPoint() const |
| double | value() const |
重新实现的公共函数
| virtual QSize | sizeHint() const override |
公共插槽
| void | display(const QString &s) |
| void | display(double num) |
| void | display(int num) |
| void | setBinMode() |
| void | setDecMode() |
| void | setHexMode() |
| void | setOctMode() |
| void | setSmallDecimalPoint(bool) |
信号
| void | overflow() |
重新实现的受保护函数
| virtual bool | event(QEvent *e) override |
| virtual void | paintEvent(QPaintEvent *) override |
详细说明

它几乎可以以任何大小显示数字。它可以显示十进制、十六进制、八进制或二进制数字。使用display()插槽可以轻松连接到数据源,该插槽被重载为接受五种参数类型中的任何一种。
此外,还有用于更改进制(setMode())和调整小数点位置(setSmallDecimalPoint())的槽。
当被要求显示超出其范围的内容时,QLCDNumber 会发出overflow() 信号。该范围由setDigitCount() 设置,但setSmallDecimalPoint() 也会对其产生影响。如果显示模式设置为十六进制、八进制或二进制,则会显示该值的整数等效形式。
可以显示以下数字和其他符号:0/O、1、2、3、4、5/S、6、7、8、9/g、减号、小数点、A、B、C、D、E、F、h、H、L、 o、P、r、u、U、Y、冒号、度符号(在字符串中用单引号表示)和空格。QLCDNumber 会将非法字符替换为空格。
虽然可以通过value() 获取数值,但无法直接获取 QLCDNumber 对象的内容。如果您确实需要文本内容,建议将触发display() 槽的信号也连接到另一个槽,并在该槽中存储该值。
顺便提一下,QLCDNumber是Qt中最古老的部分,其渊源可追溯至Sinclair Spectrum上的一个BASIC程序。
成员类型文档
enum QLCDNumber::Mode
此类型决定数字的显示方式。
| 常量 | 值 | 描述 |
|---|---|---|
QLCDNumber::Hex | 0 | 十六进制 |
QLCDNumber::Dec | 1 | 十进制 |
QLCDNumber::Oct | 2 | 八进制 |
QLCDNumber::Bin | 3 | 二进制 |
如果显示模式设置为十六进制、八进制或二进制,则会显示该值的整数等值。
enum QLCDNumber::SegmentStyle
此类型决定了QLCDNumber 控件的外观。
| 常量 | 值 | 描述 |
|---|---|---|
QLCDNumber::Outline | 0 | 生成填充为背景色的凸起分段。 |
QLCDNumber::Filled | 1 | 生成填充为 windowText 颜色的凸起分段。 |
QLCDNumber::Flat | 2 | 生成填充为 windowText 颜色的平坦分段。 |
属性文档
digitCount : int
该属性存储当前显示的位数
与当前的位数相对应。如果QLCDNumber::smallDecimalPoint 为false,小数点将占用一个位。
默认情况下,该属性的值为 5。
访问函数:
| int | digitCount() const |
| void | setDigitCount(int numDigits) |
另请参阅 smallDecimalPoint 。
intValue : int
该属性存储四舍五入到最接近整数的显示值
该属性对应于LCDNumber当前显示值最接近的整数。这是十六进制、八进制和二进制模式下使用的值。
如果显示值不是数字,则该属性的值为 0。
默认情况下,该属性的值为 0。
访问函数:
mode : Mode
该属性存储当前显示模式(进制)
对应于当前显示模式,其取值包括Bin 、Oct 、Dec (默认)和Hex 。Dec 模式可显示浮点数值,其他模式则显示相应的整数值。
访问函数:
| QLCDNumber::Mode | mode() const |
| void | setMode(QLCDNumber::Mode) |
另请参阅 smallDecimalPoint(),setHexMode(),setDecMode(),setOctMode() 以及setBinMode()。
segmentStyle : SegmentStyle
该属性存储了 LCDNumber 的样式。
| 样式 | 结果 |
|---|---|
Outline | 生成填充为背景色的凸起段 |
Filled (这是默认设置)。 | 生成填充为前景色且凸起的段。 |
Flat | 生成填充前景色且平坦的线段。 |
Outline 此外,Filled 还将使用QPalette::light()和QPalette::dark()来实现阴影效果。
访问函数:
| QLCDNumber::SegmentStyle | segmentStyle() const |
| void | setSegmentStyle(QLCDNumber::SegmentStyle) |
smallDecimalPoint : bool
该属性控制小数点的样式
如果为 true,小数点将绘制在两个数字位置之间。否则,它将占据一个独立的数字位置,即绘制在数字位置上。默认值为 false。
当小数点绘制在数字之间时,数字间的间距会略微变宽。
访问函数:
| bool | smallDecimalPoint() const |
| void | setSmallDecimalPoint(bool) |
另请参阅 mode 。
value : double
该属性存储显示的数值
该属性对应 LCDNumber 当前显示的值。
如果显示值不是数字,则该属性的值为 0。
默认情况下,该属性的值为 0。
访问函数:
成员函数文档
[explicit] QLCDNumber::QLCDNumber(QWidget *parent = nullptr)
构建一个LCD数字,将位数设置为5,进制设为十进制,小数点模式设为“小”,边框样式设为凸起方框。将segmentStyle()设置为Outline 。
parent 参数将传递给QFrame 构造函数。
另请参阅 setDigitCount() 和setSmallDecimalPoint()。
[explicit] QLCDNumber::QLCDNumber(uint numDigits, QWidget *parent = nullptr)
构建一个LCD数字,将位数设置为numDigits ,进制设置为十进制,小数点模式设置为“小”,边框样式设置为凸起框。segmentStyle()被设置为Filled 。
参数parent 将传递给QFrame 构造函数。
另请参阅 setDigitCount() 和setSmallDecimalPoint()。
[virtual noexcept] QLCDNumber::~QLCDNumber()
清除LCD上的数字。
bool QLCDNumber::checkOverflow(double num) const
如果num 过大而无法完整显示,则返回true ;否则返回false 。
另请参阅 display()、digitCount() 和smallDecimalPoint()。
bool QLCDNumber::checkOverflow(int num) const
如果 `num ` 过大而无法完整显示,则返回 `true `;否则返回 `false`。
这是一个重载函数。
另请参阅 display()、digitCount() 和smallDecimalPoint()。
int QLCDNumber::digitCount() const
返回当前的位数。
注意: 这是 digitCount 属性的获取器 函数。
另请参阅 ` setDigitCount()`。
[slot] void QLCDNumber::display(const QString &s)
显示字符串s 所表示的数字。
此版本的函数不支持mode() 和smallDecimalPoint()。
可以显示以下数字和其他符号:0/O、1、2、3、4、5/S、6、7、8、9/g、减号、小数点、A、B、C、D、E、F、h、H、L、 o、P、r、u、U、Y、冒号、度符号(在字符串中指定为单引号)以及空格。QLCDNumber 会将非法字符替换为空格。
注意:此 插槽是重载的。要连接到此插槽:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
lCDNumber, qOverload(&QLCDNumber::display));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
lCDNumber, [receiver = lCDNumber](const QString &s) { receiver->display(s); }); [slot] void QLCDNumber::display(double num)
显示数字num 。
注意:此 插槽已被重载。要连接到此插槽:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
lCDNumber, qOverload(&QLCDNumber::display));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
lCDNumber, [receiver = lCDNumber](double num) { receiver->display(num); }); [slot] void QLCDNumber::display(int num)
显示数字num 。
注意:此 插槽已被重载。要连接到此插槽:
// Connect using qOverload:
connect(sender, &SenderClass::signal,
lCDNumber, qOverload(&QLCDNumber::display));
// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
lCDNumber, [receiver = lCDNumber](int num) { receiver->display(num); }); [override virtual protected] bool QLCDNumber::event(QEvent *e)
重写了:QFrame::event(QEvent *e)。
[signal] void QLCDNumber::overflow()
每当要求QLCDNumber 显示过大的数字或过长的字符串时,都会触发此信号。
setDigitCount() 函数绝不会发出此信号。
[override virtual protected] void QLCDNumber::paintEvent(QPaintEvent *)
重写了:QFrame::paintEvent (QPaintEvent *)。
[slot] void QLCDNumber::setBinMode()
调用setMode (Bin)。此方法仅为方便起见而提供(例如,用于将按钮与其连接)。
另请参阅 setMode()、setHexMode()、setDecMode()、setOctMode() 以及mode()。
[slot] void QLCDNumber::setDecMode()
调用setMode (12月)。此接口仅为方便起见而提供(例如,用于将按钮与其连接)。
另请参阅 setMode()、setHexMode()、setOctMode()、setBinMode() 以及mode()。
void QLCDNumber::setDigitCount(int numDigits)
将当前位数设置为numDigits 。必须在0到99之间。
注意: 这是属性digitCount 的设置 函数。
另请参阅 digitCount()。
[slot] void QLCDNumber::setHexMode()
调用setMode (十六进制)。此方法仅为方便起见而提供(例如,用于将其与按钮连接)。
另请参阅 setMode()、setDecMode()、setOctMode()、setBinMode() 以及mode()。
[slot] void QLCDNumber::setOctMode()
调用setMode (10月)。此方法仅为方便而提供(例如,用于将按钮与之关联)。
另请参阅 setMode()、setHexMode()、setDecMode()、setBinMode() 以及mode()。
[override virtual] QSize QLCDNumber::sizeHint() const
重新实现了:QFrame::sizeHint() const。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.