0
我需要通過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行。 –