QTableWidget
で行を検索する必要があります。テーブルの各行には日付のあるフィールドがあり、ユーザーの入力に基づいて指定された日付間隔内の行のみを表示する必要があります。ここに私の関数です:QTableWidget行による高速検索
void nvr::sort()
{
QTableWidget* tabela = this->findChild<QTableWidget*>("NCtable");
QDateEdit* c1 = this->findChild<QDateEdit*>("c1");
QDateEdit* c2 = this->findChild<QDateEdit*>("c2");
// user specified ranges for date
QDate date1 = c1->date();
QDate date2 = c2->date();
//row numbers in table
int rowsNum = tabela->rowCount();
// hide all rows
for(int z = 0; z < rowsNum; z++) {
tabela->hideRow(z);
}
// show only rows that are within range
for(int z = 0; z < rowsNum; z++) {
QDateTime dateTime = QDateTime::fromString(tabela->item(z,2)->text(),"dd.MM.yyyy hh:mm");
QDate date = dateTime.date();
//date compares
if ((date1.operator <=(date)) && (date2.operator >=(date))) {
tabela->showRow(z);
}
}
}
これは私が200の行を持っていればうまく動作します。しかし、私は30 000の行を持っていると私は確かに、GUIがフリーズするので、私は関数が非常に遅く実行されると仮定します。より速い実行のための任意の提案?
QVectorにデータを格納する場合(たとえばdate1でソート)は、ユーザーが日付を入力したときにループし、有効なものをQStandardItemModelに追加し、QTableViewで表示します。ユーザーがこれらの日付を変更した場合は、QStandardItemModelをクリアしてプロセスを再起動するだけです。これは30 000行で簡単に動作するはずです。 –