2017-12-08 3 views
0

この機能は、テキストファイルからハードドライブパーティションを読み込むことです。関数は正常に動作していますが、パーティションレイアウトの変更後にテーブルをリロードする場合は、以前に表示されたものと同じ量の空白行が追加され、単語の後にデータ行が書き込まれます。QTableWidgetを再ロードまたは再ペイントしている間に、空の行が追加され、これらの空白行の後にデータが書き込まれます。

void PartitionPage::processPartitions(QString line, int numberOfRows){ 
static int row = 0; 
QStringList partitions = line.split(":"); 
qDebug() << numberOfRows; 

//qDebug() << partitions.count(); 

if(partitionTable->rowCount() < (row + 1)) 
    partitionTable->setRowCount(row + 1); 

// we want to dispay first 7 columns only 
//if(partitionTable->columnCount() < partitions.size()) 
// partitionTable->setColumnCount(partitions[0].size()); 

// Set Header Label Texts Here 
// set the columncount to 7 as we only want to display first 7 column 
partitionTable->setColumnCount(7); 
partitionTable->setColumnWidth(0, 120); 
partitionTable->setColumnWidth(1, 120); 
partitionTable->setColumnWidth(2, 120); 
partitionTable->setColumnWidth(3, 120); 
partitionTable->setColumnWidth(4, 120); 
partitionTable->setColumnWidth(5, 120); 
partitionTable->setColumnWidth(6, 120); 

partitionTable->setHorizontalHeaderLabels(QString("Partition; Start Sector; End Sector; Total Sectors; Partition Size; Partition ID; File System").split(";")); 

for(int column = 0; column < partitionTable->columnCount(); column++){ 
    QTableWidgetItem *newItem = new QTableWidgetItem(); 
    newItem->setText(partitions.at(column)); 
    partitionTable->setItem(row, column, newItem); 
    newItem->setTextAlignment(Qt::AlignCenter); 
} 
row++; 
partitionTable->setAlternatingRowColors(true); 
partitionTable->setSelectionBehavior(QAbstractItemView::SelectRows); 

}

空白行

+0

どのようにしてウィジェットを再読み込みまたは再描画しますか? – eyllanesc

+0

// gpartedが見つかった後、ユーザーがパーティションを変更する可能性があるため、パーティションおよびリロードテーブルを検索します。 partitionTable-> clear(); findPartitions(); 遅延(3000); partitionTable-> repaint(); qApp-> processEvents(); – qurbanullah

+0

プロジェクトが最小限であれば共有することができます。そうでない場合は、[mcve] – eyllanesc

答えて

0

Qtはビューモデル系における多くのバグを持っています。あなたの最も面白い。

考えられる解決策:

1)他のQtのバージョンを使用してください。

2)QTableViewと独自の "model"(QAbstractTableModelの子)を使ってテーブルを作成してみてください。これは初めて簡単ではありません。しかし助けることができます

+0

助けてくれてありがとう。やってみます。 – qurbanullah

関連する問題