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 widget 的视觉外观。
常量 | 值 | 描述 |
---|---|---|
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,小数点将绘制在两个数字位置之间。否则,小数点将占据其自身的一个数位位置,即绘制在一个数位位置上。默认设置为假。
当小数点位于两位数之间时,数位间的空间会稍宽一些。
访问功能:
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 会用空格代替非法字符。
[slot]
void QLCDNumber::display(double num)
这是一个重载函数。
显示数字num 。
[slot]
void QLCDNumber::display(int num)
这是一个重载函数。
显示数字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(Dec)。为方便起见(如将按钮连接到它)。
另请参阅 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(Oct)。为方便起见(如将按钮与之连接)而提供。
另请参阅 setMode(),setHexMode(),setDecMode(),setBinMode() 和mode().
[override virtual]
QSize QLCDNumber::sizeHint() const
重实现:QFrame::sizeHint() const.
© 2025 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.