Qt 用户界面 : speed up big table

标签 qt qtablewidget

我有一个包含 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);

enter image description here

最佳答案

正如 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/

相关文章:

python - 检索选定的记录

c++ - 如何从 QTableWidget 中删除所有行

c++ - 链接器找不到 dlsym

c++ - 链接错误 : QtCore. framework/Versions/4/QtCore for architecture x86_64

python - 双击 PyQt4 QTableWidget 上的行将内容设置为 -1

c++ - 如何在可编辑的 QTableWidgetItem 中捕捉按键?

drag-and-drop - 如何拖放到 QTableWidget 中? (PyQT)

c++ - 在 QT 应用程序(VS 插件)中使用 QcustomPlot 基本代码停止工作程序

qt - 更改 QT 主窗口的标题字体

multithreading - C++ Qt : Redirect cout from a thread to emit a signal