从Qt中的文本文件填充表小部件

从Qt中的文本文件填充表小部件,qt,file,user-interface,widget,Qt,File,User Interface,Widget,我是Qt新手,需要以下方面的帮助: 我想创建一个包含表小部件的GUI,该小部件由来自制表符分隔文本文件的信息填充。在我的GUI中,用户首先浏览文本文件,然后在Table小部件中显示内容。我已经完成了浏览部分,但是如何将文本文件中的数据加载到表格小部件中?分两步,解析文件,然后将其推送到小部件中 我从电话里抢了这些线 您的过程线函数应如下所示: static int row = 0; QStringList ss = line.split('\t'); if(ui->tableWidget

我是Qt新手,需要以下方面的帮助:


我想创建一个包含表小部件的GUI,该小部件由来自制表符分隔文本文件的信息填充。在我的GUI中,用户首先浏览文本文件,然后在Table小部件中显示内容。我已经完成了浏览部分,但是如何将文本文件中的数据加载到表格小部件中?

分两步,解析文件,然后将其推送到小部件中

我从电话里抢了这些线

您的过程线函数应如下所示:

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++;
static int row=0;
QStringList ss=line.split('\t');
如果(ui->tableWidget->rowCount()tableWidget->setRowCount(行+1);
如果(ui->tableWidget->columnCount()tableWidget->setColumnCount(ss.size());
对于(int column=0;columntableWidget->setItem(行、列、新项);
}
行++;
有关操作QTableWidgets的更多信息,请查看。对于在QtCreator中使用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);
    }
void squidlogreader\:进程行(QString行)
{
静态int行=0;
QStringList ss=line.split('\t');
如果(ui->tableWidget->rowCount()tableWidget->setRowCount(行+1);
如果(ui->tableWidget->columnCount()tableWidget->setColumnCount(ss.size());
对于(int column=0;columntableWidget->setItem(行、列、新项);
}
行++;
}
void squidlogreader_u::在_按钮上_单击()
{
QFile文件(“in.txt”);
如果(!file.open(QIODevice::ReadOnly | QIODevice::Text))
返回;
而(!file.atEnd()){
QString line=file.readLine();
工艺管线(管线);
}

这个问题很模糊,你是在使用MVC还是“传统”小部件?表格小部件是2D的,那么文本将如何在表格中布局?在Qt Creator中,有一个名为表格小部件的GUI控件,这就是我正在使用的。我认为这个问题很简单。我想在我的GUI中填充一个以制表符分隔的表格文本文件作为数据源。如果使用表格小部件不是最好的方法,那么我愿意接受其他建议。正如我所提到的,我是Qt新手。如果您只想在2D网格中显示文本,而不与任何其他小部件共享数据,那么
QTableWidget
是最好的选择。此外,如果您只需要在你的帖子中提出了一个问题:加载一个文本文件,将其解析为单独的字符串,然后将其推送到一个表格小部件中;这是三个非常不同的过程,如果在本网站或文档中没有对每个过程进行解释,我会感到惊讶。
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);
    }