[转]QT QDateTime类、QTimer类

 

QDateTime类,头文件#include <QDateTime>
可以使用QDateTime类来获得系统时间。通过QDateTime::currentDateTime()来获取本地系统的时间和日期信号。可以通过date()和time()来返回
datetime中的日期和时间部分,代码如下:
QDateTime *datetime=new QDateTime(QDateTime::currentDateTime());
QString s=datetime->date().tostring();
复制代码
void Dialog::add()
{
    QDateTime *datetime=new QDateTime(QDateTime::currentDateTime());
    QString tmp=datetime->date().toString();
    label1->setText(tmp);
}
复制代码

 

复制代码
QTimer类
定时器(QTimer)的使用非常简单,只需要一下几个步骤就可以完成定时器的应用。
新建一个定时器
QTimer *time_clock=new QTimer(this);
连接这个定时器的信号和槽,利用定时器的timeout()。
connect(time_clock,SIGNAL(timeout()),this,SLOT(slottimedone()));
time_clock->start(2000);
开启定时器,并设定定时周期
--定时器定时有两种方式,start(int time)和setSingleShot(true),其中,start(int time)表示每隔"time"秒就会重启定时器,
可以重复触发定时,利用stop()将定时器关掉,二setSingleShot(true)则是仅启动定时器一次,工程中常用的是前者。
复制代码
复制代码
#include "dialog.h"
#include <QGridLayout>
#include <QDateTime>

//构造函数
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    time1=new QTimer(this);
    btn1=new QPushButton(this);
    edit1=new QLineEdit(this);
    edit2=new QLineEdit(this);
    label1=new QLabel(this);
    btn1->setText("求和");
    label1->setText("label");
    QGridLayout * layout=new QGridLayout(this);
    layout->addWidget(edit1,0,0);
    layout->addWidget(edit2,0,1);
    layout->addWidget(btn1,1,0);
    layout->addWidget(label1,1,1);

    //将btn1点击事件和add函数关联起来
    connect(btn1,SIGNAL(clicked()),this,SLOT(add()));
    //将time1的timeout()时间和on_time函数关联起来
    connect(time1,SIGNAL(timeout()),this,SLOT(on_time()));
}

void Dialog::add()
{
    //判断定时器是否已经启动
    if(time1->isActive())
        //停止定时器
        time1->stop();
    else
        time1->start(1000);//表示每隔1秒就会重启定时器
}

//窗口标题每秒变化一次
void Dialog::on_time()
{
    //获取当前系统时间
    QDateTime *date1=new QDateTime(QDateTime::currentDateTime());
    QString s=date1->time().toString();
    //获取秒
    //date1->time().second();
    this->setWindowTitle(s);
}

Dialog::~Dialog()
{

}
你遇到的错误是: ``` ImportError: cannot import name 'QStandardItemModel' from 'PySide6.QtCore' ``` --- ## ❌ 错误原因 这个错误说明你尝试从 `PySide6.QtCore` 中导入 `QStandardItemModel`,但这个实际上属于 `PySide6.QtGui` 模块。 --- ## ✅ 正确的导入方式 在 **PySide6** 中,`QStandardItemModel` 和 `QStandardItem` 属于 `PySide6.QtGui` 模块。 所以你应该这样导入: ```python from PySide6.QtGui import QStandardItemModel, QStandardItem ``` 而不是: ```python from PySide6.QtCore import QStandardItemModel # ❌ 错误 ``` --- ## ✅ 示例导入代码 ```python from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableView from PySide6.QtGui import QStandardItemModel, QStandardItem from PySide6.QtCore import Qt ``` --- ## ✅ 示例:使用 QTableView + QStandardItemModel 展示数据 下面是一个完整的可运行示例,展示如何在 PySide6 中正确使用 `QStandardItemModel` 和 `QTableView`。 ```python import sys from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTableView from PySide6.QtGui import QStandardItemModel, QStandardItem from PySide6.QtCore import Qt class TableViewDemo(QWidget): def __init__(self): super().__init__() self.setWindowTitle("QTableView 示例") self.resize(800, 600) layout = QVBoxLayout(self) # 创建表格视图 self.table_view = QTableView() # 创建模型 self.model = QStandardItemModel() self.model.setHorizontalHeaderLabels([ "车次", "等送时间", "送车时间", "装车,等待取车", "取车时间", "列检作业,列车上线", "发车等待时间", "发车" ]) # 示例数据 data = { "X387": [0.0, 0.02, 0.0, 0.2, 0.02, 1440.13, "", ""], "X6541": [0.02, 0.02, 0.0, 0.12, 0.05, 0.0, "", ""], "X3333": [504.48, 0.03, 780.28, 547.63, 420.08, 20.45, "", ""], } for train_name, intervals in data.items(): row = [QStandardItem(train_name)] + [QStandardItem(str(x)) for x in intervals] self.model.appendRow(row) # 设置模型 self.table_view.setModel(self.model) # 自动调整列宽 self.table_view.resizeColumnsToContents() # 添加到布局 layout.addWidget(self.table_view) def refresh_data(self): """ 刷新表格数据 """ self.model.setRowCount(0) # 清空旧数据 new_data = { "X2222": [780.25, 547.68, 450.6, 0.08, 0.02, 18.3, "", ""], "X5555": [1044.42, 300.25, 247.32, 469.13, 14.3, 240.23, "", ""], } for train_name, intervals in new_data.items(): row = [QStandardItem(train_name)] + [QStandardItem(str(x)) for x in intervals] self.model.appendRow(row) if __name__ == '__main__': app = QApplication(sys.argv) demo = TableViewDemo() demo.show() sys.exit(app.exec()) ``` --- ## ✅ 补充说明 | 名 | 所属模块 | |------|----------| | `QStandardItemModel` | `PySide6.QtGui` | | `QStandardItem` | `PySide6.QtGui` | | `QTableView` | `PySide6.QtWidgets` | | `QApplication`, `QWidget`, `QVBoxLayout` | `PySide6.QtWidgets` | | `Qt` | `PySide6.QtCore` | --- ##
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值