本页内容

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

详细说明

“1234”,具有类似LCD的数字显示效果

它几乎可以以任何大小显示数字。它可以显示十进制、十六进制、八进制或二进制数字。使用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程序。

另请参阅 QLabel 和QFrame 。

成员类型文档

enum QLCDNumber::Mode

此类型决定数字的显示方式。

常量值描述
QLCDNumber::Hex0十六进制
QLCDNumber::Dec1十进制
QLCDNumber::Oct2八进制
QLCDNumber::Bin3二进制

如果显示模式设置为十六进制、八进制或二进制,则会显示该值的整数等值。

enum QLCDNumber::SegmentStyle

此类型决定了QLCDNumber 控件的外观。

常量值描述
QLCDNumber::Outline0生成填充为背景色的凸起分段。
QLCDNumber::Filled1生成填充为 windowText 颜色的凸起分段。
QLCDNumber::Flat2生成填充为 windowText 颜色的平坦分段。

属性文档

digitCount : int

该属性存储当前显示的位数

与当前的位数相对应。如果QLCDNumber::smallDecimalPoint 为false,小数点将占用一个位。

默认情况下,该属性的值为 5。

访问函数:

int digitCount() const
void setDigitCount(int numDigits)

另请参阅 smallDecimalPoint 。

intValue : int

该属性存储四舍五入到最接近整数的显示值

该属性对应于LCDNumber当前显示值最接近的整数。这是十六进制、八进制和二进制模式下使用的值。

如果显示值不是数字,则该属性的值为 0。

默认情况下,该属性的值为 0。

访问函数:

int intValue() const
void display(const QString &s)
void display(int num)
void display(double num)

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。

访问函数:

double value() const
void display(const QString &s)
void display(int num)
void display(double num)

成员函数文档

[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 会将非法字符替换为空格。

注意: 属性intValue 和value的设置 函数。

注意:此 插槽是重载的。要连接到此插槽:

// 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 。

注意: 用于属性intValue 和value的设置 函数。

注意:此 插槽已被重载。要连接到此插槽:

// 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 。

注意: 用于属性intValue 和value的设置 函数。

注意:此 插槽已被重载。要连接到此插槽:

// 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.