qt QTreeWidget如何设置坐标?
时间: 2023-10-06 15:10:57 浏览: 55
QTreeWidget是继承自QTreeView的,因此可以使用QTreeView的方法来设置坐标。可以使用QTreeView的viewport()方法获取QTreeView的视口,然后使用QAbstractScrollArea的scrollTo()方法将视口滚动到指定的坐标。
示例代码如下:
```cpp
QTreeWidget* treeWidget = new QTreeWidget(this);
// 添加子项
QTreeWidgetItem* item1 = new QTreeWidgetItem(treeWidget, QStringList("Item 1"));
QTreeWidgetItem* item2 = new QTreeWidgetItem(treeWidget, QStringList("Item 2"));
QTreeWidgetItem* item3 = new QTreeWidgetItem(treeWidget, QStringList("Item 3"));
// 设置坐标
QPoint item1Pos = item1->treeWidget()->viewport()->mapToGlobal(item1->treeWidget()->visualItemRect(item1).center());
item1Pos.setY(item1Pos.y() + item1->treeWidget()->header()->height());
item1Pos.setX(item1Pos.x() + item1->treeWidget()->frameGeometry().x());
QPoint item2Pos = item2->treeWidget()->viewport()->mapToGlobal(item2->treeWidget()->visualItemRect(item2).center());
item2Pos.setY(item2Pos.y() + item2->treeWidget()->header()->height());
item2Pos.setX(item2Pos.x() + item2->treeWidget()->frameGeometry().x());
QPoint item3Pos = item3->treeWidget()->viewport()->mapToGlobal(item3->treeWidget()->visualItemRect(item3).center());
item3Pos.setY(item3Pos.y() + item3->treeWidget()->header()->height());
item3Pos.setX(item3Pos.x() + item3->treeWidget()->frameGeometry().x());
// 滚动到指定坐标
treeWidget->viewport()->scrollTo(item2Pos);
```
在上面的示例代码中,首先获取了每个子项在视口中的中心坐标,然后将它们转换为全局坐标。最后,使用QAbstractScrollArea的scrollTo()方法将视口滚动到指定的坐标(这里以item2的中心坐标为例)。