qt 利用QTimer定时器和QLabel显示系统时间,将标签字体设置成16像素高,标签背景设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt 利用QTimer定时器和QLabel显示系统时间,将标签字体设置成16像素高,标签背景设置相关的知识,希望对你有一定的参考价值。


主要代码如下,其他的根据需要自己调整吧。

qlabelsample.h文件

#ifndef QLABELSAMPLE_H
#define QLABELSAMPLE_H

#include <QDialog>
#include <QTimer>
#include <QDateTime>

namespace Ui 
class QLabelSample;


class QLabelSample : public QDialog

    Q_OBJECT

public:
    explicit QLabelSample(QWidget *parent = 0);
    ~QLabelSample();

private slots:
    void updateLabelTime(void);

private:
    Ui::QLabelSample *ui;
    QTimer m_timer;
;

#endif // QLABELSAMPLE_H

qlabelsample.cpp文件

#include "qlabelsample.h"
#include "ui_qlabelsample.h"

QLabelSample::QLabelSample(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::QLabelSample),
    m_timer(this)

    ui->setupUi(this);

    QFont SimSunFont("SimSun", 16);
    ui->label->setFont(SimSunFont);
    ui->label->setStyleSheet("color:blue; background-color:red");

    m_timer.setTimerType(Qt::PreciseTimer);
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(updateLabelTime()));
    m_timer.start(100);


QLabelSample::~QLabelSample()

    delete ui;


void QLabelSample::updateLabelTime(void)

    ui->label->setText(QDateTime::currentDateTime().toString(Qt::DefaultLocaleLongDate));

追问

按照你的程序运行出现这个怎么办啊求大大指点

追答

我用的QDialog做的基类,另外图片里没看到我给的两个文件啊……

提示MainWindow没有定义,和这代码没关系啊。

给你整个工程吧,多少自学一点吧,先把建一个新工程显示个Helloworld之类的搞定啊。

https://raw.githubusercontent.com/Zalafina/swf_test/master/temp/QLabelSample.zip

参考技术A #include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimer>
#include <QDateTime>
#include <QDebug>
QTimer *m_nTimerId;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

ui->setupUi(this);
m_nTimerId = new QTimer;
connect(m_nTimerId,SIGNAL(timeout()),this,SLOT(doSomeThing()));
ui->label->setStyleSheet("background-color: rgb(255, 0, 0); color: rgb(0, 0, 255);");
m_nTimerId->start(1000);

MainWindow::~MainWindow()

delete ui;

void MainWindow::doSomeThing()

char date[100]= 0;
QDateTime dd = QDateTime::currentDateTime();
sprintf(date,"%d 年 %02d-%02d  %02d:%02d:%02d ",dd.date().year(), dd.date().month(), dd.date().day(), dd.time().hour(), dd.time().minute(), dd.time().second());
qDebug()<<date;
ui->label->setText(date);

追问

有.ccp的吗😊

追答

就这个啊 就这点代码
你拖个lable就行了

追问

可我是战五渣

😰

追答

怎么发给你

追问

救命

追答

QTimer时间显示

追问

好了

可是

妈耶

追答

在main.cpp
里加入头文件
#include

以及以下内容
QTextCodec *codec = QTextCodec::codecForName("GBK");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);

追问

6啊哥

本回答被提问者采纳

qt中在QLabel中显示动态图片??

qt中在QLabel中显示动态图片??我用qpixmap添加的图片都变成静态的了,想让他变成动态的gif图片

用定时器切换静态图片。时间间隔短一点的话,就成动态的图片了。
希望能帮到你。
百度了一下,还可以这样:
#include <qapplication.h>
#include <qlabel.h>
//#include <qpixmap.h> //qt中的类
#include <qtimer.h>
#include <qmovie.h>
int main (int argc, char *argv[])

QApplication app(argc,argv);
QLabel *label=new QLabel ("", 0); //初始化qlabel
QMovie pm("logo.gif"); //设定要显示的图片
label->setMovie(pm); //将图片加载到label上
label->setGeometry( 0, 0, 240, 320 ); //屏幕大小,初始位置
app.setMainWidget(label); //将图片设为放置在中间
// QTimer::singleShot( 3*1000, label, SLOT(close()));//显示时间
label->show ();
return app.exec();

参考资料:http://www.cuteqt.com/blog/?p=276

参考技术A QMovie可以搞定

以上是关于qt 利用QTimer定时器和QLabel显示系统时间,将标签字体设置成16像素高,标签背景设置的主要内容,如果未能解决你的问题,请参考以下文章

定时器QTimer

QT 定时执行某个函数,隐藏某个控件

Qt中想产生可以随一些条件变化的文本,像是QLabel那样只能看到文字的

如何在每次 QTimer 发射时使用 QLabel

qt中,如何用QLabel显示一个变量!

Qt中使用定时器(可使用QObject::timerEvent定时执行,QTimer::singleShot可只触发一次)