Qt ui:加速大桌子

时间:2014-04-01 09:48:47

标签: qt qtablewidget

我有一个超过2000行的QTableWidget表。当我在每一行中添加QToolButton“删除”时,它变得有点慢。为什么表变慢,按钮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);

enter image description here

1 个答案:

答案 0 :(得分:2)

正如vahancho所说,你会想要一个项目委托。项目代表只是以某种方式显示数据和信息。它主要将项目绘制成您想要的样子,因此它不一定会创建整个小部件。您可能希望使用样式化的项目委托。 http://qtadventures.wordpress.com/2012/02/04/adding-button-to-qviewtable/这应该包含您需要的所有信息。

使用QTableWidget方法setItemDelegate,setItemDelegateForColumn,setItemDelegateForRow将项目委托设置为窗口小部件。