c++ - 重绘 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();
)没有给出任何结果。仅当我单击它时才重新绘制小部件。
那么如何重新绘制我的小部件?
解决方案
继承自QAbstractScrollArea
as的类QTreeWidget
具有viewport()
必须更新的小部件,因此在您的情况下,解决方案是:
viewport()->update();
如果你想从另一个线程调用更新,你可以使用QMetaObject::invokeMethod():
QMetaObject::invokeMethod(viewport(), "update", Qt::QueuedConnection)
推荐阅读
- django - 如何在 django rest 框架中实现 google 和 facebook oauth2?
- javascript - 将数值编码为字母数字代码(反转解码功能)
- python - 收到此错误:/admin/ 关系“myapp_myuser”处的 ProgrammingError 在创建超级用户或继续 localhost/admin 时不存在
- python - 按住一个按钮
- reactjs - NextJS:警告:道具目标不匹配。服务器:“_top” 客户端:“_blank”
- java - 如何使 JavaDoc 链接到 Intellj IDEA 中的 JDK 文档
- laravel - 如何在 laravel 中索引用户的所有活动会话并进行管理?
- arrays - 将十六进制字符串转换为 C 中的 uint8_t 数组
- r - R 仅在本地范围内加载库
- python - 使用 Python 的单个连接上的多个请求