6

私は Qt を初めて使用し、次の点で助けが必要です。

タブ区切りのテキスト ファイルからの情報が取り込まれるテーブル ウィジェットを含む GUI を作成したいと考えています。私の GUI では、ユーザーはまずテキスト ファイルを参照し、次にその内容をテーブル ウィジェットに表示します。ブラウズ部分は完了しましたが、テキスト ファイルからテーブル ウィジェットにデータをロードするにはどうすればよいですか?

4

2 に答える 2

8

ファイルを解析してからウィジェットにプッシュするという 2 つのステップです。

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 を構築することに切り替えることをお勧めします...ドラッグ アンド ドロップではなく、すべてをコードに手動で追加することです。

于 2012-05-16T19:13:25.683 に答える
-2

ごめん...

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);
    }
于 2013-11-10T18:33:17.347 に答える