import sys
from PySide2.QtCore import Slot
from PySide2.QtWidgets import QApplication, QVBoxLayout, QHBoxLayout, QWidget, QMenuBar, QMenu, QListWidget, \
QListWidgetItem, QListView, QDesktopWidget, \
QAction
app = QApplication(sys.argv)
class MainWindow(QWidget):
def __init__(self):
QWidget.__init__(self)
self.showMaximized()
self.mainLayout = QVBoxLayout()
self.listview = QListWidget()
self.menubar = QMenuBar()
self.menuView = QMenu("View")
self.actionList = QAction("List Mode", self)
self.menuView.addAction(self.actionList)
self.actionList.triggered.connect(self.listMode)
self.actionGrid = QAction("Grid Mode", self)
self.menuView.addAction(self.actionGrid)
self.actionGrid.triggered.connect(self.gridMode)
self.menubar.addMenu(self.menuView)
self.bodyLayout = QHBoxLayout()
self.desktop = QDesktopWidget()
self.listview_width = self.desktop.availableGeometry(self).width()*0.7
self.listview.setMaximumWidth(self.listview_width)
self.listview.setMovement(QListView.Movement.Static)
self.listview.setResizeMode(QListView.ResizeMode.Fixed)
self.listview.setUniformItemSizes(True)
self.listview.setSpacing(0)
self.gridMode()
for i in range(50):
item = QListWidgetItem(self.listview)
item.setText("item"+str(i))
self.listview.addItem(item)
self.bodyLayout.addWidget(self.listview)
self.mainLayout.addWidget(self.menubar)
self.mainLayout.addLayout(self.bodyLayout)
self.setLayout(self.mainLayout)
@Slot()
def listMode(self):
self.listview.setViewMode(QListView.ListMode)
@Slot()
def gridMode(self):
self.listview.setViewMode(QListView.IconMode)
def run(self):
self.show()
app.exec_()
if __name__ == "__main__":
window = MainWindow()
window.run()
如果运行此操作,请切换到列表模式并返回网格模式。网格模式下的初始列数显示的列数少于随后切换到网格模式的列数。我如何使它最初看起来与后续开关相同?Post主要是代码,因为重现此问题所需的qt样板文件
编辑:已解决。改变
self.listview.setResizeMode(QListView.ResizeMode.Fixed)
到
self.listview.setResizeMode(QListView.ResizeMode.Adjust)
解决了。改变
到
相关问题 更多 >
编程相关推荐