自动更新QDateTimeEdit,以便它显示当前的系统日期和时间
Automatically updating QDateTimeEdit so that it displays the current system date and time
使用Qt库,有没有办法使用信号自动更新QDateTimeEdit
,使小部件以类似于时钟的方式显示当前日期和时间?
在下面的代码示例中,dateTimeEditSystem
是 QDateTimeEdit
对象。 但是,setDateTime()
函数仅运行一次。我希望QDateTimeEdit
对象动态更新。 有没有一种可靠的方法可以在不使用计时器(即信号和插槽)的情况下做到这一点? 还是计时器是执行此操作的唯一方法?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
// setup the UI
ui->setupUi(this);
// set the current date and time
ui->dateTimeEditSystem->setDateTime( QDateTime::currentDateTime() );
}
我尝试使用计时器,但不幸的是QDateTimeEdit
没有更新。 这是完整的主窗口.cpp代码。 我在这里做错了什么?
#include <QTimer>
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->dateTimeEditSystem->setDateTime( QDateTime::currentDateTime() );
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT( updateTime() ));
timer->start(1000);
}
void MainWindow::updateTime()
{
ui->dateTimeEditSystem->setDateTime( QDateTime::currentDateTime() );
}
MainWindow::~MainWindow()
{
delete ui;
}
更新:
这实际上很容易做到。 代码没有更新的原因是 mainwindow.h 文件中缺少插槽声明。 以下是 mainwindow.h 标头的完整内容。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void updateTime();
};
#endif // MAINWINDOW_H
自动更新Qt中的QDateTimeEdit
或任何其他时钟小部件都可以通过QTimer
轻松完成。 有关如何完成此操作,请参阅以下示例:
http://qt-project.org/doc/qt-4.8/widgets-digitalclock.html
或
http://qt-project.org/doc/qt-4.8/widgets-shapedclock.html
请注意,QTimer
的分辨率在不同的操作系统上有所不同,但对于需要一次进行~1秒的更新,QTimer
在几乎所有平台上都应该没问题。 有关QTimer
分辨率的详细信息,请参阅以下内容:
http://qt-project.org/doc/qt-4.8/QTimer.html#accuracy-and-timer-resolution
相关文章:
- C++,系统无法执行指定的程序
- 查询SQLite数据库中的日期
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 如何使用套接字编程获取系统日期和时间
- 自动更新QDateTimeEdit,以便它显示当前的系统日期和时间
- 执行循环,直到系统时间到达特定日期/时间
- 如何在 c++ 中将用户日期与系统日期进行比较
- Qt资源系统中文件的最后修改日期
- 在linux中的c++程序中设置系统日期和时间
- 从系统中拆分日期和时间::DateTime
- Apache Qpid/Redhat MRG-以可移植的方式跨不同系统发送日期
- 获取Win32系统日期格式字符串
- c++不能在当前系统时间和日期之后命名txt文件
- 如何在我的C++程序中的特定日期/驱动器已满后删除linux系统中的文件
- 如何从系统日期获取昨天的日期并附加到字符串?
- 如何以秒为单位获取系统的当前日期时间
- 在c++中传递系统日期和时间作为文件名