我是 Qt 新手,需要以下帮助:
我想创建一个包含表格小部件的 GUI,该小部件由来自制表符分隔的文本文件的信息填充。在我的 GUI 中,用户将首先浏览文本文件,然后在 Table Widget 中显示内容。我已经完成了浏览部分,但是如何将文本文件中的数据加载到 Table Widget 中?
我是 Qt 新手,需要以下帮助:
我想创建一个包含表格小部件的 GUI,该小部件由来自制表符分隔的文本文件的信息填充。在我的 GUI 中,用户将首先浏览文本文件,然后在 Table Widget 中显示内容。我已经完成了浏览部分,但是如何将文本文件中的数据加载到 Table Widget 中?
分两步,解析文件,然后将其推送到小部件中。
我从QFile 文档中获取了这些行。
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QByteArray line = file.readLine();
process_line(line);
}
您的 process_line 函数应如下所示:
static int row = 0;
QStringList ss = line.split('\t');
if(ui->tableWidget->rowCount() < row + 1)
ui->tableWidget->setRowCount(row + 1);
if(ui->tableWidget->columnCount() < ss.size())
ui->tableWidget->setColumnCount( ss.size() );
for( int column = 0; column < ss.size(); column++)
{
QTableWidgetItem *newItem = new QTableWidgetItem( ss.at(column) );
ui->tableWidget->setItem(row, column, newItem);
}
row++;
有关操作 QTableWidgets 的更多信息,请查看文档。对于使用 Qt Creator 中的 GUI 构建器的新用户,一开始很难弄清楚。
最终,我建议切换到他们在所有示例中所做的方式构建 GUI ……通过在代码中手动添加所有内容而不是拖放。
对不起...
void squidlogreader_::process_line(QString line)
{
static int row = 0;
QStringList ss = line.split('\t');
if(ui->tableWidget->rowCount() < row + 1)
ui->tableWidget->setRowCount(row + 1);
if(ui->tableWidget->columnCount() < ss.size())
ui->tableWidget->setColumnCount( ss.size() );
for( int column = 0; column < ss.size(); column++)
{
QTableWidgetItem *newItem = new QTableWidgetItem( ss.at(column) );
ui->tableWidget->setItem(row, column, newItem);
}
row++;
}
void squidlogreader_::on_pushButton_clicked()
{
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QString line = file.readLine();
process_line(line);
}