作为一个Qt5开发者,我们要实现主窗口状态栏显示时间,可以按照以下步骤进行:
Step 1:创建状态栏
首先,我们需要在主窗口中创建状态栏,可以在构造函数中添加如下代码:
QMainWindow::QMainWindow(QWidget *parent) : QMainWindow(parent) {
statusBar()->showMessage(tr("Ready"));
}
此时,运行程序,我们可以在主窗口底部看到一个状态栏,上面显示了一条“Ready”的消息。
Step 2:添加定时器
接着,我们需要添加一个定时器来定时更新时间。可以在构造函数中添加如下代码:
QMainWindow::QMainWindow(QWidget *parent) : QMainWindow(parent) {
statusBar()->showMessage(tr("Ready"));
QTimer *timer = new QTimer(this); // 创建定时器
connect(timer, SIGNAL(timeout()), this, SLOT(updateStatusBar())); // 连接定时器信号与槽
timer->start(1000); // 启动定时器,每秒触发一次timeout()信号
}
这里我们创建了一个定时器,并将它与主窗口的updateStatusBar()
槽函数连接起来。updateStatusBar()
函数是我们接下来要实现的。
Step 3:实现updateStatusBar()槽函数
我们需要实现updateStatusBar()
函数,以更新状态栏中的时间信息。代码如下:
void QMainWindow::updateStatusBar() {
QDateTime currentTime = QDateTime::currentDateTime();
QString timeStr = "Current time:%1";
timeStr = timeStr.arg(currentTime.toString("hh:mm:ss"));
statusBar()->showMessage(timeStr);
}
这里我们使用了QDateTime
类获取当前时间,然后将时间格式化为“小时:分钟:秒”形式。最后,我们将时间信息显示在状态栏中。
经过以上步骤,我们已经成功实现了主窗口状态栏的时间显示功能。
示例1:
#include <QApplication>
#include <QMainWindow>
#include <QStatusBar>
#include <QDateTime>
#include <QTimer>
class MainWindow : public QMainWindow {
public:
MainWindow() {
statusBar()->showMessage(tr("Ready"));
QTimer *timer = new QTimer(this); // 创建定时器
connect(timer, SIGNAL(timeout()), this, SLOT(updateStatusBar())); // 连接定时器信号与槽
timer->start(1000); // 启动定时器,每秒触发一次timeout()信号
}
private slots:
void updateStatusBar() {
QDateTime currentTime = QDateTime::currentDateTime();
QString timeStr = "Current time:%1";
timeStr = timeStr.arg(currentTime.toString("hh:mm:ss"));
statusBar()->showMessage(timeStr);
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
示例2:
#include <QApplication>
#include <QMainWindow>
#include <QStatusBar>
#include <QDateTime>
#include <QTimer>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QMainWindow mainWindow;
mainWindow.statusBar()->showMessage(tr("Ready"));
QTimer *timer = new QTimer(&mainWindow); // 创建定时器
QObject::connect(timer, &QTimer::timeout, [&]() {
QDateTime currentTime = QDateTime::currentDateTime();
QString timeStr = "Current time:%1";
timeStr = timeStr.arg(currentTime.toString("hh:mm:ss"));
mainWindow.statusBar()->showMessage(timeStr);
});
timer->start(1000); // 启动定时器,每秒触发一次timeout()信号
mainWindow.show();
return app.exec();
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Qt5 实现主窗口状态栏显示时间 - Python技术站