qt 一直更新qtreewidget,但是滚轮一直刷新,怎么解决,详细代码
时间: 2024-12-22 10:31:27 浏览: 3
如果你发现使用 Qt 的 QTreeWidget 时,尽管滚动条已经禁用了,但还是偶尔会有闪烁或“自动”刷新滚动条的情况,这可能是由于某些内部处理或者事件还在触发滚动的行为。为了解决这个问题,你可以尝试以下方法:
首先,确保你在设置滚动条策略之前已经完成了所有可能触发滚动的操作,例如添加、删除节点等。然后,在完成这些操作后再禁用滚动条。
```cpp
// 在构建 QTreeWidget 后
QTreeWidget *treeWidget = new QTreeWidget(parent);
// 添加需要的item或者其他可能导致滚动的初始化操作
treeWidget->addTopLevelItem(...);
...
// 在所有的初始操作完成后才禁用滚动条
treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
treeWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// 如果依然有滚动,可以在适当的位置加一个信号连接,防止无谓的滚动
QObject::connect(treeWidget, &QTreeWidget::contentsAboutToBeChanged,
[treeWidget] {
treeWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
treeWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
});
```
这段代码会在 `contentsAboutToBeChanged` 信号触发前再次禁用滚动条,这个信号通常是在视图的内容快要改变时发出的,如添加、删除节点时。
阅读全文