Qt实现更新时钟(QLCDNumber)

前期问题解决:

这两天在看《Qt实战一二三》@一去、二三里,作者多次在创建一个对象时使用this指针

QLabel *pLabel = new QLabel(this); 

m_pLCD = new QLCDNumber(this);

QTimer *pTimer = new QTimer(this);

作者解释说this为其所在的父窗体,

但是我写完运行之后,就报错error: invalid use of 'this' in non-member function

通过查找资料:

this指针只能在一个类的成员函数中调用,它表示当前对象的地址。

原来是要在mainwindow.cpp里面写!我原来是在main.cpp里写的,难怪报错。

MainWindow::MainWindow(QWidget *parent)    
: QMainWindow(parent)
{ 
  QLCDNumber *m_pLCD = new QLCDNumber(this);
}

接下来是槽函数

void MainWindow::onTimeOut()

{

dateTime =QDateTime::currentDateTime();

m_pLCD->display(dateTime.toString("yyyy-MM-dd HH:mm:ss.zzz"));

报错:m_pLCD没有在这个函数onTimeOut()范围内声明

源头在:mainwindow.h 文件

要加上:private: 
  QLCDNumber *m_pLCD;

后又出现报错:error: 'QLCDNumber' does not name a type、error: field 'dateTime' has incomplete type 'QDateTime'

mainwindow.h 中 要加上

#include <QLCDNumber>

#include <QDateTime>

这下可以运行出来了,但是只有一个框

看到博友@nba0nb 回复说可能是lcd大小不够,于是加了行代码:m_pLCD->resize(300,100);,这下运行出来就对了!

Ps:采用了在线制作gif动画工具啦!

最后总结下,@一去、二三里 QT之LCDNumber里虽然没有给出所有代码,但是这样正好让参考的人自己思考!那我还是补充下其中没有的部分,希望其他人在苦苦纠结之后也可以豁然开朗:

mainwindow.cpp 中 要加上头文件

#include <QLCDNumber> //该控件用于显示一个LCD数字
#include <QTimer>
#include <QDateTime>

主窗体类中加:m_pLCD->resize(300,100);

mainwindow.h 中 添加 头文件 

#include <QLCDNumber>
#include <QDateTime>

类里面添加:

public slots:   
 void onTimeOut();
private:   
 QLCDNumber *m_pLCD;   
 QTimer *pTimer;    
QDateTime dateTime;

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值