首页 > 解决方案 > 重绘 QTreeWidget

问题描述

我有一个基于 QTreeWidget 的简单类。在某些情况下(当其中一列的值更新时),我需要重新绘制它。我有一个函数在我需要更新我的小部件时调用:

void TreeWidget::updated()
{
    /* some actions with cells */

    /* here need to repaint widget */
    this->update();
    /* also I'm tried this->repaint(); */
}

但是线this->update();(或this->repaint();)没有给出任何结果。仅当我单击它时才重新绘制小部件。

那么如何重新绘制我的小部件?

标签: c++qtqt5qtreewidget

解决方案


继承自QAbstractScrollAreaas的类QTreeWidget具有viewport()必须更新的小部件,因此在您的情况下,解决方案是:

viewport()->update();

如果你想从另一个线程调用更新,你可以使用QMetaObject::invokeMethod()

QMetaObject::invokeMethod(viewport(), "update", Qt::QueuedConnection)

推荐阅读