gpt4 book ai didi

c++ - 自动更新 QDateTimeEdit 以显示当前系统日期和时间

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:22 25 4
gpt4 key购买 nike

使用 Qt 库,有没有办法使用信号自动更新 QDateTimeEdit,使小部件以类似于时钟的方式显示当前日期和时间?

在下面的代码示例中,dateTimeEditSystemQDateTimeEdit 对象。但是,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 没有更新。这是完整的 mainwindow.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 header 的完整内容。

#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

最佳答案

自动更新 QDateTimeEdit 或 Qt 中的任何其他时钟小部件可以使用 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++ - 自动更新 QDateTimeEdit 以显示当前系统日期和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com