我有一个包含 2000 多行的 QTableWidget 表。当我在每一行中添加 QToolButton“删除”时,它变得有点慢)。为什么表格、按钮 ui 或信号映射器变慢?我怎样才能加快我的 table ,也许用其他东西替换按钮或以其他方式连接信号?
我的按钮代码:
// 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);
最佳答案
正如 vahancho 所说,您将需要一个项目委托(delegate)。项目代表只是以某种方式显示数据和信息。它主要将项目绘制成您想要的样子,因此它不一定创建整个小部件。您可能想要使用样式化的项目委托(delegate)。 http://qtadventures.wordpress.com/2012/02/04/adding-button-to-qviewtable/这应该包含您需要的所有信息。
您可以使用 QTableWidget 方法 setItemDelegate、setItemDelegateForColumn、setItemDelegateForRow 将项目委托(delegate)设置为小部件。
关于Qt 用户界面 : speed up big table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22782244/