我有一個包含2000多行的QTableWidget表。當我在每行中添加QToolButton「Remove」時,它變得有點慢)。爲什麼表變慢,按鈕ui或信號映射器?我怎樣才能加快我的桌子,也許用別的東西替換按鈕或以其他方式連接信號?Qt ui:加速大表
我對按鈕的代碼:
// mapper for remove buttons
QSignalMapper* signalMapper = new QSignalMapper(this);
connect(signalMapper, SIGNAL(mapped(int)), this, SLOT(RemoveString(int)), Qt::UniqueConnection);
不是每一行:
//remove button
QToolButton* remove_button = new QToolButton(this);
remove_button->setText("Remove");
signalMapper->setMapping(remove_button, index);
connect(remove_button, SIGNAL(clicked()), signalMapper, SLOT(map()), Qt::UniqueConnection);
ui->locale_table->setCellWidget(index, 3, remove_button);
您創建並添加2000個按鈕到表格中?如果是的話,那當然會很慢。您一次不需要2000個按鈕 - 只能看到多個按鈕。這可以通過視圖的項目委託來實現。 – vahancho
所以如果我將上下滾動,按鈕將被創建和刪除?它快嗎? – hoody
我認爲它會更快。但是如果性能如此重要,那麼最好使用QTableView(使用模型和委託)來實現您的表,而不是使用QTableWidget。 – vahancho