【 在 tkfeng2000 (Tian) 的大作中提到: 】
: release模式下还行, 1ms左右
这么牛,怎么做到的?
我更新一个表格,同Release下,居然要近1s,不知如何提速呢。
笔记本电脑,CPU Intel Core i5-4210U @ 1.70 GHz 2.40 GHz,内存 4 GB
代码如下,请Qt高手指点。
void ResultForm::updateTable(int tableIndex) {
QElapsedTimer tm;
tm.start();
QTableWidget* table = tables.at(tableIndex);
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
table->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
table->setRowCount(0);
// table->clearContents();
// table->setColumnCount(headers.size());
disconnect(table, &QTableWidget::cellChanged, 0, 0);
QString strDateFmt("yyyy-MM-dd hh:mm:ss");
QMap<qint64, Val*> vals = mapVals[tableIndex];
QList<qint64> ids = vals.keys();
for(int i = 0, j = 0; i < ids.size(); i++, j = 0) {
table->insertRow(i);
Val *val = mapVals[ids.at(i)];
QTableWidgetItem* item = new QTableWidgetItem();
item->setData(Qt::DisplayRole, table->rowCount());
item->setStatusTip(QString::number(val->getValId()));
Qt::ItemFlags readOnlyFlag = item->flags() & (~Qt::ItemIsEditable);
item->setFlags(readOnlyFlag);
table->setItem(i, j++, item);
item = new QTableWidgetItem(val->getDrawName());
item->setFlags(readOnlyFlag);
item->setItem(i, j++, item);
item = new QTableWidgetItem(val->getValTag());
item->setFlags(readOnlyFlag);
table->setItem(i, j++, item);
item = new QTableWidgetItem(val->getSampleTag());
item->setFlags(readOnlyFlag);
table->setItem(i, j++, item);
item = new QTableWidgetItem(val->getResult());
item->setFlags(readOnlyFlag);
table->setItem(i, j++, item);
…… // 总共10列。
for(int c = 1; c < j ; c++) {
table->item(i, c)->setTextAlignment(Qt::AlignCenter);
}
}
connect(table, &QTableWidget::cellChanged, this, &ResultForm::changeCell
);
// table->horizontalHeader()->setSectionResizeMode(QHeaderView::Resiz
eToContents);
// table->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeT
oContents);
qint64 t = tm.restart();
qDebug() << "updateTable()" << table->rowCount() << " rows, time" << t;
}
[2021-03-07 22:26:10.301][Debug] updateTable() 676 rows, time 817
--
修改:callmebbser FROM 59.61.12.*
FROM 58.23.58.*