所以我一直在使用 pyqt5,我正在尝试设置 qcombobox 的高度(大小而不是位置)。不是下拉列表,而是实际的框。我已经尝试了一切,但似乎没有任何效果。 setFixedSize 只改变框的宽度,然后改变它在主窗口上的 y 位置,而不是它的实际高度(看起来很奇怪,我想知道它是否是一个错误),并且样式表内容似乎只影响下拉列表和/或行编辑但不编辑 qcombobox 的框架。有人有什么建议吗?从字面上看,只是想让该死的东西垂直变大 2 像素!
这是我所拥有的:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QWidget, QComboBox, QDialog, QApplication
from PyQt5.QtGui import *
from PyQt5.QtCore import Qt, QSize
class combo(QDialog):
def __init__(self):
super().__init__()
containers = ['1','2','3','4','5']
cbox = QComboBox(self)
cbox.setFixedSize(80, 30)
cbox.setStyleSheet('QComboBox {font: 16pt Arial}')
cbox.setEditable(True)
cbox.lineEdit().setFixedSize(50, 18)
cbox.addItems(containers)
cbox.setSizeAdjustPolicy(1)
cbox.move(50, 50)
for i in range(len(containers)):
cbox.model().setData(cbox.model().index(i,0), QSize(80, 30), Qt.SizeHintRole)
cbox.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = combo()
demo.show()
sys.exit(app.exec_())
我在 macOS 上也遇到了这个问题。没有运气设置minimumSize等。我设法通过将组合框样式设置为Fusion来解决这个问题。然后控件高度遵循 setMinimumHeight(...)
抱歉,C++ 代码,Python 代码将类似。
cbox->setStyle(QStyleFactory::create("Fusion"));
I encountered the same problem on Mac OS and confirm the same fix worked
for me.
I will try to report it as a fault if I can find an appropriate channel.
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QApplication, QComboBox,
QVBoxLayout, QWidget, QStyleFactory
class ComboBoxExample(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("QComboBox with Fusion Style")
self.setGeometry(100, 100, 800, 600)
layout = QVBoxLayout()
combo_box = QComboBox()
combo_box.addItems(['1','2','3'])
combo_box.setFixedHeight(150) # Set height to 150px
layout.addWidget(combo_box)
self.setLayout(layout)
if __name__ == "__main__":
app = QApplication([])
# Apply Fusion style
app.setStyle(QStyleFactory.create("Fusion"))
window = ComboBoxExample()
window.show()
app.exec()