问题描述
我刚刚用QTreeWidget编写了一个程序。但是我想在单击按钮时将其恢复为正常状态,这意味着它应该与启动时的状态相同。我了解了如何删除显示为蓝色水平线的所选部分。by
// ... other views
.navigationBarItems(leading:
Button(action:{
self.isSheetPresented.toggle()
}) {
Text("display")
}
.frame(width: 25,height: 45)
)
...
} // end of NavigationView
.sheet(isPresented: $isSheetPresented) { // << here !!
Textfield("Hello",text: $binding)
}
检查图像 但是,如果有人扩大了列宽,请检查第二张图片,“类型”的列宽已从第一张图片开始增加。然后问题是如何将其设置为“ normal”,即图片中显示的默认值, 1,想象有人通过拖动(位置交换)将“修改日期”的位置更改为“大小”列的位置。然后如何按按钮将其重置为正常状态?这是有关Qtreewidget的一些基本疑问,因此我在这里没有代码可写。 任何帮助将不胜感激 谢谢你
解决方法
您可以使用sectionSize()
收集和存储部分大小,并使用resizeSection()
进行恢复。
要恢复原始的逻辑索引,只需检查visualIndex()
,如果它与逻辑索引不匹配,则使用moveSection()
。
# ...
header = self.table.horizontalHeader()
self.sectionSizes = [header.sectionSize(s) for s in range(header.count())]
def resetSections(self):
header = self.table.horizontalHeader()
for section,size in enumerate(self.sectionSizes):
if header.visualIndex(section) != section:
header.moveSection(header.visualIndex(section),section)
header.resizeSection(section,size)
我强烈建议您仔细阅读并研究有关QTableWidget(及其继承的类:QTableView和QAbstractItemView)的文档以及{{3 }},因为您要问的所有内容在这些页面中都有明确说明。