如何将QListWidget的setText显示位置调整到图标上方
解决QListWidget文本显示在图标上方的方案
要实现文本从图标右侧移动到图标上方的布局,无需自定义复杂控件,仅需要对QListWidget的视图参数做少量调整即可,修改后的完整代码如下:
from PyQt5.QtCore import Qt, QSize from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QListView, QListWidgetItem # 核心配置修改 # 1. 切换到图标视图模式,只有该模式支持调整文本和图标的相对位置 video_thumbnail.setViewMode(QListView.IconMode) # 2. 设置文本对齐到图标上方居中 video_thumbnail.setItemTextAlignment(Qt.AlignTop | Qt.AlignHCenter) # 3. 保持原有横向排列的流布局 video_thumbnail.setFlow(QListView.LeftToRight) # 4. 设置网格尺寸,根据你的图标大小调整,预留出文本显示的高度避免挤压 video_thumbnail.setGridSize(QSize(140, 160)) # 可选:固定项的位置,禁止拖拽移动 video_thumbnail.setMovement(QListView.Static) # 原有逻辑保持不变 video_thumbnail.setIconSize(QSize(128, 128)) for i in range(30): it = QListWidgetItem() it.setIcon(QIcon('test3.png')) it.setText(str(i)) video_thumbnail.addItem(it)
参数说明
setViewMode(QListView.IconMode):默认的列表模式固定为图标左、文本右的布局,切换到图标模式后才支持调整文本和图标的相对位置setItemTextAlignment:用来控制文本相对于图标的对齐方向,AlignTop即可实现文本显示在图标上方setGridSize:根据你的图标尺寸和文本长度调整,保证项与项之间不会出现重叠、排版错乱的问题
内容的提问来源于stack exchange,提问作者Nikki
相关产品推荐
相关产品推荐

