Qt之显示控件(QLCDNumber)

简述

QLCDNumber控件将会把数字以LCD的样式显示出来。

功能描述

它可以显示几乎任何大小的数字。它可以显示十进制,十六进制,八进制或二进制数字。使用display()插槽很容易连接到数据源,该插槽重载了五个参数类型中的任何一个。

可以显示这些数字和其他符号: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程序。

使用方法

在下面的例子中,我们通过重载QLCDNumber实现了一个数字时钟。子类的使用方法和其它控件一样。

效果

源码

.h

#ifndef DIGITALCLOCK_H
#define DIGITALCLOCK_H

#include 
class DigitalClock : public QLCDNumber
{
     
    Q_OBJECT
public:
    DigitalClock(QWidget *parent = nullptr);
public slots:
    void showTime();
};

#endif // DIGITALCLOCK_H

.cpp

#include "digitalclock.h"

#include 
DigitalClock::DigitalClock(QWidget *parent)
    : QLCDNumber(parent)
{
     
    setSegmentStyle(Flat);

    QTimer *timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &DigitalClock::showTime);
    timer->start(1000);

    this->setStyleSheet("QLCDNumber {background-color:white;color:black}");

    showTime();

    setWindowTitle(tr("Digital Clock"));
    resize(150, 60);


}

void DigitalClock::showTime()
{
     
    QTime time = QTime::currentTime();
    QString text = time.toString("hh:mm");
    if ((time.second() % 2) == 0)
        text[2] = ' ';
    display(text);
}

常用接口

属性

  • 数字位数

    • digitCount : int
  • 段样式

    • segmentStyle : SegmentStyle
样式 效果
Outline 产生填充有背景色的凸起段
Filled(默认模式) 产生充满前景色的凸起段
Flat 产生填充有前景色的平面段
  • 返回与当前数值最相近的整数
    • intValue : int
  • 小数点样式
    • smallDecimalPoint : bool
  • 数值进制
    • mode : Mode
常量 描述
QLCDNumber::Hex 0 十六进制
QLCDNumber::Dec 1 十进制
QLCDNumber::Oct 2 八进制
QLCDNumber::Bin 3 二进制

模式属性用于控制数值显示模式

  • 返回当前数值
    • value:double

公共函数

  • 设置数值位数
    • setDigitCount(int)
  • 设置显示模式
    • setMode(QLCDNumber::Mode)
  • 设置段样式
    • setSegmentStyle(QLCDNumber::SegmentStyle)

槽函数

名称 描述
display(const QString&s) 显示字符串数值
display(int num) 显示整型数值
display(double num) 显示浮点型数值
setBinMode() 设置二进制模式
setDecMode() 设置十进制模式
setHexMode() 设置十六进制模式
setOctMode() 设置八进制模式
setSmallDecimalPosition(bool) 设置小数点位置

信号

名称 描述
overflow 数值超出了LCDNumber所能显示的范围

引用

[1] Qt助手

你可能感兴趣的:(Qt基础)