pyqt5 qtreeview水平滚动条不再次出现
我有这个 QtDesigner 生成的小部件:mainuiXXXX.py
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MyApp(object):
def setupUi(self, MyApp):
MyApp.setObjectName("MyApp")
MyApp.resize(603, 413)
self.centralwidget = QtWidgets.QWidget(MyApp)
self.centralwidget.setObjectName("centralwidget")
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout.setObjectName("gridLayout")
self.treeView = QtWidgets.QTreeView(self.centralwidget)
self.treeView.setObjectName("treeView")
self.treeView.setHorizontalScrollMode(QtWidgets.QAbstractItemView.ScrollPerItem)
self.gridLayout.addWidget(self.treeView, 0, 0, 1, 1)
MyApp.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MyApp)
self.menubar.setGeometry(QtCore.QRect(0, 0, 603, 29))
self.menubar.setObjectName("menubar")
MyApp.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MyApp)
self.statusbar.setObjectName("statusbar")
MyApp.setStatusBar(self.statusbar)
self.retranslateUi(MyApp)
QtCore.QMetaObject.connectSlotsByName(MyApp)
def retranslateUi(self, MyApp):
_translate = QtCore.QCoreApplication.translate
MyApp.setWindowTitle(_translate("MyApp", "MyApp"))
和这个 MRE 代码:test.py
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QHeaderView
from PyQt5 import QtGui
from mainuiXXXX import Ui_MyApp
class MyApp(QMainWindow, Ui_MyApp):
def __init__(self, parent=None):
super(MyApp, self).__init__(parent)
self.setupUi(self)
self.model = None
self.treeView.setHeaderHidden(True)
self.treeView.header().setStretchLastSection(False)
self.treeView.header().setSectionResizeMode(QHeaderView.ResizeToContents)
self.create_tree()
print(self.treeView.header().stretchLastSection())
def create_tree(self):
self.model = QtGui.QStandardItemModel()
self.rootNode = self.model.invisibleRootItem()
self.top = QtGui.QStandardItem('TOP')
self.rootNode.appendRow(self.top)
self.treeView.setModel(self.model)
for i in range(100):
self.mod = QtGui.QStandardItem(str('a'*i))
# print(i)
self.top.appendRow(self.mod)
for i in range(3):
self.mod2 = QtGui.QStandardItem(str(self.mod.text() + 'aaaabbb'*i))
self.mod.appendRow(self.mod2)
for i in range(3):
self.mod3 = QtGui.QStandardItem(str(self.mod.text() + 'aaaaccc'*i))
self.mod2.appendRow(self.mod3)
self.treeView.expandAll()
if __name__ == '__main__':
app = QApplication(sys.argv)
myapp = MyApp()
myapp.show()
try:
sys.exit(app.exec_())
except SystemExit:
print('Closing Window...')
它包括
self.treeView.header().setStretchLastSection(False)
self.treeView.header().setSectionResizeMode(QHeaderView.ResizeToContents)
来自这里的:pyqt5 QTreeView 水平滚动条不显示 和如何使PyQt5 QScrollArea水平滚动条动态显示?< /a>
但又没有水平滚动条,这让我发疯,我明白了:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论