私は Qt を初めて使用し、次の点で助けが必要です。
タブ区切りのテキスト ファイルからの情報が取り込まれるテーブル ウィジェットを含む GUI を作成したいと考えています。私の GUI では、ユーザーはまずテキスト ファイルを参照し、次にその内容をテーブル ウィジェットに表示します。ブラウズ部分は完了しましたが、テキスト ファイルからテーブル ウィジェットにデータをロードするにはどうすればよいですか?
私は Qt を初めて使用し、次の点で助けが必要です。
タブ区切りのテキスト ファイルからの情報が取り込まれるテーブル ウィジェットを含む GUI を作成したいと考えています。私の GUI では、ユーザーはまずテキスト ファイルを参照し、次にその内容をテーブル ウィジェットに表示します。ブラウズ部分は完了しましたが、テキスト ファイルからテーブル ウィジェットにデータをロードするにはどうすればよいですか?
ファイルを解析してからウィジェットにプッシュするという 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 を構築することに切り替えることをお勧めします...ドラッグ アンド ドロップではなく、すべてをコードに手動で追加することです。
ごめん...
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);
}