可以自动刷新QTableWidget
Refresh QTableWidget automatically possible?
本文关键字:刷新 QTableWidget 更新时间:2023-10-16
QTableWidget(在我的代码中,ipTable)项来自test_data.txt。但是test_data.txt文件每隔3秒就会更改一次。我想自动刷新表格。。
如何自动更新QTableWidget。。?
这是我的密码。
#include "dialog.h"
#include "ui_dialog.h"
#include "addip.h"
#include <QFile>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(onTimer()));
timer->start(1000);
setWindowTitle( "IP List" );
ui->ipTable->setColumnCount(3);
refresh_table();
}
Dialog::~Dialog()
{
delete ui;
}
QStringList Dialog::refresh_table()
{
int field;
QFile file( "/home/yein/widget/test_data.txt" );
QStringList title;
title << "IP" << "Protocol" << "state";
file.open( QIODevice::ReadOnly);
QTextStream read(&file);
ui->ipTable->clear();
ui->ipTable->setRowCount(0);
ui->ipTable->setHorizontalHeaderLabels(title);
while(!read.atEnd())
{
QString tmp = read.readLine();
QStringList tmpList = tmp.split( "," );
ui->ipTable->insertRow(ui->ipTable->rowCount());
field = ui->ipTable->rowCount() - 1;
ui->ipTable->setItem( field, IP, new QTableWidgetItem( tmpList[0] ) );
ui->ipTable->setItem( field, PROTOCOL, new QTableWidgetItem( tmpList[1] ) );
ui->ipTable->setItem( field, STATE, new QTableWidgetItem( tmpList[2] ) );
}
file.close();
return table;
}
void Dialog::on_btnAdd_clicked()
{
QString protocol;
QString IP;
int res;
addIP add(this);
add.setWindowTitle( "Add IP" );
res = add.exec();
if( res == QDialog::Rejected )
return;
IP = add.getIP();
protocol = add.getProtocol();
qDebug() << "IP :" << " " << IP;
qDebug() << "Protocol : " << " " << protocol;
write_on_file( IP,protocol );
}
void Dialog::write_on_file( QString IP, QString protocol )
{
QFile file( "/home/yein/widget/test_data.txt" );
file.open( QIODevice::Append );
data[0] = IP;
data[1] = protocol;
data[2] = "0"; // init state 0
QString _str = QString( "%1,%2,%3n" )
.arg( data[0] )
.arg( data[1] )
.arg( data[2] );
qDebug() << _str << " ";
QByteArray str;
str.append(_str);
file.write(str);
file.close();
refresh_table();
}
void Dialog::on_btnClose_clicked()
{
this->close();
}
void Dialog::onTimer()
{
updateRStatusBar();
}
void Dialog::updateRStatusBar()
{
QDateTime local(QDateTime::currentDateTime());
ui->clock->setText(local.toString());
}
一个选项是使用
QFileSystemWatcher::fileChanged(const QString &path)
并且每当文件被修改时接收信号。此建议取决于更改文件的频率以及您希望查看的文件数量。
相关文章:
- 当用户在qtablewidget中输入单元格时,如何获得信号?C++
- 是否可以配置提升日志刷新?
- 如何在qt中同步应用程序和显示器的刷新率?
- C++,Qt:仅在双击后编辑qtablewidget项目
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- std::endl,在 Python 中是否有等价物?(返回 + 刷新)
- QTableWidget 到多个文件
- PyQT - 在 QTableWidget 单元格中显示垂直文本
- 在 directx11 代码中更改全屏模式下的刷新率不起作用
- 检测是否在 QTableWidget 中添加或删除了列
- 如何在 Windows 中立即刷新文件夹图标
- 如何填写 QTableWidget?
- QTableWidget一次显示一定数量的行
- QTableWidget省略了一些主题,项目被创建但被忽略
- 如何为 QTableWidget 添加自动完成
- 刷新来自Qpid质子连接的所有消息而不是等待?
- 使用鼠标滚轮平滑地滚动QTableWidget
- 使用连接更新 QtableWidget
- 将 QTableWidget 内容打印为 PDF
- 可以自动刷新QTableWidget