如何设置QComboBox高度?

问题描述 投票:0回答:2

所以我一直在使用 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_())
python pyqt pyqt5 qcombobox qtstylesheets
2个回答
0
投票

我在 macOS 上也遇到了这个问题。没有运气设置minimumSize等。我设法通过将组合框样式设置为Fusion来解决这个问题。然后控件高度遵循 setMinimumHeight(...)

抱歉,C++ 代码,Python 代码将类似。

cbox->setStyle(QStyleFactory::create("Fusion"));

0
投票
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()
© www.soinside.com 2019 - 2024. All rights reserved.