qt菜鸟求教时间显示问题

dengdeng1109 2012-04-16 07:19:48
我用Qt Creator的,添加了Time Edit和Date Edit这两个控件,实现了将设置的时间分别显示到两个label上,但是仅仅实现了显示,都不变化呀!不知道是应该用定时器来实现还是Qt中另外有实现方法?


#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
ui->menuWidget->hide();
connect(ui->dateEdit,SIGNAL(dateChanged(QDate)),this,SLOT(datedisplay()));
connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),this,SLOT(timedisplay()));
}

Dialog::~Dialog()
{
delete ui;
}

void Dialog::datedisplay()
{
ui->dateLabel->setText(ui->dateEdit->date().toString(" yyyy-MM-dd"));
}

void Dialog::timedisplay()
{
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
}
...全文
530 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanshuiyaoyao 2014-12-24
  • 打赏
  • 举报
回复
我想问一下,我在做一个qlabel显示游戏运行了好久时间,比如我在玩游戏,就显示完了好久,成功后时间就停止,看玩游戏一共花了好多时间,假如我游戏暂停了下,怎样让现实时间也暂停,当游戏继续时,时间继续增加
jdwx 2012-04-17
  • 打赏
  • 举报
回复
我资源里有一个以前写的例子。
shen_wei 2012-04-17
  • 打赏
  • 举报
回复
QTimer* pTimer = new QTimer;
pTimer->start(1000);
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );
void Dialog::timedisplay()
{
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));

}
whyboysa 2012-04-17
  • 打赏
  • 举报
回复
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
比如这句, 我不知道你的 timeEdit->time() 这个函数是那来的。
我实现的话会
QTime time;
ui->timeLabel->setText(time.toString(time.currenttime());

可能你用的是ui 设计的问题, 一些东西都卸载ui的设计文件里了。

  • 打赏
  • 举报
回复
QTime time;

ui->timeEdit->setTime(time.currentTime());
获得系统的时间,然后再用个定时器每秒刷新一下
dengdeng1109 2012-04-17
  • 打赏
  • 举报
回复
看了。。。不过我要的不是简单的显示
[Quote=引用 13 楼 的回复:]

我资源里有一个以前写的例子。
[/Quote]
dengdeng1109 2012-04-17
  • 打赏
  • 举报
回复
对啊。。。我个人觉得做出来的效果类似于我们电脑右下角显示的日期和时间
而且可以修改。。。
[Quote=引用 11 楼 的回复:]

ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
比如这句, 我不知道你的 timeEdit->time() 这个函数是那来的。
我实现的话会
QTime time;
ui->timeLabel->setText(time.toString(time.currenttime());

可能你用的是ui……
[/Quote]
dengdeng1109 2012-04-17
  • 打赏
  • 举报
回复
哎呀妈呀,终于有个理解我的,我就是要把ui->timeEdit中的时间显示到Label上呀!
不过继续诚心求教:这样子我能获取系统时间,不过timeedit相当于显示了,无法修改了~~~~
[Quote=引用 10 楼 的回复:]

QTime time;

ui->timeEdit->setTime(time.currentTime());
获得系统的时间,然后再用个定时器每秒刷新一下
[/Quote]
dengdeng1109 2012-04-16
  • 打赏
  • 举报
回复
囧~
基本上也就这些代码呀。。。
[Quote=引用 8 楼 的回复:]

贴全点代码出来看看。考没考虑变量的生命周期啊。 之类的。 没程序没真相啊。
[/Quote]
whyboysa 2012-04-16
  • 打赏
  • 举报
回复
贴全点代码出来看看。考没考虑变量的生命周期啊。 之类的。 没程序没真相啊。
dengdeng1109 2012-04-16
  • 打赏
  • 举报
回复
还是木有用啊~~~~~~~~~~难道我其他什么地方错了?
[Quote=引用 6 楼 的回复:]

QTimer* pTimer = new QTimer; // 声明个定时器对象
pTimer->start(1000);// 启动定时器,定时时间是1秒。
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );//检测你的定时器对象,是否到定时时间,到时间就激活槽函数。
void Dial……
[/Quote]
whyboysa 2012-04-16
  • 打赏
  • 举报
回复
QTimer* pTimer = new QTimer; // 声明个定时器对象
pTimer->start(1000);// 启动定时器,定时时间是1秒。
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );//检测你的定时器对象,是否到定时时间,到时间就激活槽函数。
void Dialog::timedisplay()//这是曹函数
{
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
//这是通过ui指向上面的timeLabel标签,并设置标签上的内容。
pTimer->start(1000);//再次启动定时器,因为第一次启动的已经到时间了。所以的再次启动一次。

}
dengdeng1109 2012-04-16
  • 打赏
  • 举报
回复
恕我愚昧啊~~~
能不能直接点的告诉我,疑问句给我压力无限大啊!!!
你贴的这段代码更是让我一头雾水

[Quote=引用 4 楼 的回复:]

2楼正解, 楼主好好理解理解。

connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),this,SLOT(timedisplay()));
中ui->timeEdit 这个对象有timeChange(QTime)信号吗?
-------------------------------------------------------------……
[/Quote]
whyboysa 2012-04-16
  • 打赏
  • 举报
回复
2楼正解, 楼主好好理解理解。

connect(ui->timeEdit,SIGNAL(timeChanged(QTime)),this,SLOT(timedisplay()));
中ui->timeEdit 这个对象有timeChange(QTime)信号吗?
------------------------------------------------------------------------
QTimer* pTimer = new QTimer;
pTimer->start(1000);
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );
void Dialog::timedisplay()
{
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
pTimer->start(1000);

}
--------------------------------------------------------------------
dengdeng1109 2012-04-16
  • 打赏
  • 举报
回复
那个槽函数就是
void Dialog::timedisplay()
{
ui->timeLabel->setText(ui->timeEdit->time().toString(" HH:mm"));
}
这个吧。。。
木有用啊~~~
[Quote=引用 2 楼 的回复:]

这个要用个定时器隔一段时间去刷新显示的内容 显示部分是对的 ;定时器是QTimer类
QTimer* pTimer = new QTimer;
pTimer->start(1000);
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );
  • 打赏
  • 举报
回复
这个要用个定时器隔一段时间去刷新显示的内容 显示部分是对的 ;定时器是QTimer类
QTimer* pTimer = new QTimer;
pTimer->start(1000);
connect( pTimer, SIGNAL( timeout()), this, SLOT( 获取TimeEdit值显示在label上的槽函数) );
[Quote=引用楼主 的回复:]
我用Qt Creator的,添加了Time Edit和Date Edit这两个控件,实现了将设置的时间分别显示到两个label上,但是仅仅实现了显示,都不变化呀!不知道是应该用定时器来实现还是Qt中另外有实现方法?


#include "dialog.h"
#include "ui_dialog.h"

Dialog::Dialog(QWidge……
[/Quote]
dengdeng1109 2012-04-16
  • 打赏
  • 举报
回复
个人觉得应该实现的效果类似于桌面上日期与时间的显示,然后也可以更改日期和时间设置,先谢过各位了~~

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧