gar*_*art 4 c++ qt qtreewidget qt5
我有一个基于 QTreeWidget 的简单类。在某些情况下(当其中一列的值更新时),我需要重新绘制它。我有一个函数,当我需要更新我的小部件时调用:
void TreeWidget::updated()
{
/* some actions with cells */
/* here need to repaint widget */
this->update();
/* also I'm tried this->repaint(); */
}
Run Code Online (Sandbox Code Playgroud)
但行this->update();(或this->repaint();) 没有给出任何结果。仅当我单击小部件时才重新绘制它。
那么我该如何重新绘制我的小部件呢?
QAbstractScrollArea从as继承的类QTreeWidget具有viewport()必须更新的小部件,因此在您的情况下,解决方案是:
viewport()->update();
Run Code Online (Sandbox Code Playgroud)
如果你想从另一个线程调用更新,你可以使用QMetaObject::invokeMethod():
QMetaObject::invokeMethod(viewport(), "update", Qt::QueuedConnection)
Run Code Online (Sandbox Code Playgroud)