QToolButton - 图标顶部的文本

Posted

技术标签:

【中文标题】QToolButton - 图标顶部的文本【英文标题】:QToolButton - Text on top of icon 【发布时间】:2016-03-15 19:59:20 【问题描述】:

在论坛上搜索了很多..但找不到合理的东西。 我有一个 QToolButton 和一个图标。我不想将文本烘焙到图标图像中,我宁愿使用 btn.setText("Text") 获得文本。 文本设置在我不想要的图标下方的问题。 它应该在图标的顶部。有没有办法做到这一点? 我猜想使用自定义 QToolButton..有人可以帮我吗?

btn = QtGui.QToolButton()
btn.setText("Text")
icon = QtGui.QIcon()
icon.addPixmap(os.path.join('path_to_icon.png', QtGui.QIcon.Normal, QtGui.QIcon.On)
btn.setIcon(icon)

理想情况下:

icon.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnTopIcon)

有没有办法使用样式表来偏移文本? 任何帮助表示赞赏

【问题讨论】:

有什么理由不只是使用 QPushButton? 由于菜单功能和图标状态模式 延迟弹出,菜单指示器 【参考方案1】:

找到了一个很好的解决方案!

b = QtGui.QToolButton()
l = QtGui.QVBoxLayout(b)

b.setFixedSize(50, 50)
b.setIconSize(QtCore.QSize(50,50))
standardFont = QtGui.QFont("Arial", 10, QtGui.QFont.Bold)
standardFont.setCapitalization(QtGui.QFont.AllUppercase)

text = QtGui.QLabel("Text")

b.setIcon(QtGui.QIcon(os.path.join(ICON_DIR, 'csLighting_ftrackTime.png')))
l.setContentsMargins(0,0,0,0)
l.addStretch()
l.addWidget(text, 0, QtCore.Qt.AlignCenter)
text.setFont(standardFont)
b.show()

【讨论】:

以上是关于QToolButton - 图标顶部的文本的主要内容,如果未能解决你的问题,请参考以下文章

修复 QToolButton 图标

带有文本的 QToolButton:覆盖最小高度以模仿常规按钮高度

QToolButton按钮

如何使用 focusInEvent 和 focusOutEvent [重复]

QToolButton 工具按钮

PyQt5 之QToolButton工具按钮