QCombobox 第一次变大了
QCombobox bigger in size for the first time only
class RangeSelection(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QGridLayout(self)
self.setLayout(layout)
self._create_widgets()
layout.addWidget(self.select_combo, 1, 1)
layout.addWidget(self.stacked, 1, 2, 5, 1)
self.stacked.currentWidget().setSizePolicy(
QSizePolicy.Preferred, QSizePolicy.Preferred)
self.stacked.currentChanged.connect(self.onCurrentChanged)
def onCurrentChanged(self):
currentw = self.stacked.currentWidget()
currentw.adjustSize()
if currentw == self.releasew:
currentw.sizeAdjustPolicy = QComboBox.AdjustToContentsOnFirstShow
self.adjustSize()
def _create_widgets(self):
self.stacked = QStackedWidget()
self.datew = QCalendarWidget()
self.datew.setVerticalHeaderFormat(QCalendarWidget.
NoVerticalHeader)
self.stacked.addWidget(self.datew)
self.buildidw = QLineEdit()
self.stacked.addWidget(self.buildidw)
self.releasew = QComboBox()
self.releasew.addItems([str(k) for k in sorted(releases())])
self.stacked.addWidget(self.releasew)
self.revw = QLineEdit()
self.stacked.addWidget(self.revw)
self.select_combo = QComboBox()
self.select_combo.addItems(['date', 'buildid', 'release', 'changeset'])
self.select_combo.activated.connect(self.stacked.setCurrentIndex)
我有这段代码,我在 QStackedWidget
中有四个小部件。当我 运行 此代码并将 self.select_combo
中的选择从 date
更改为 release
时,self.releasew
组合框最初显示的大小与 QCalendarWidget
(这显然看起来很糟糕)。但是,当我将我的选择从 release
更改为任何其他值然后返回 release
时,self.releasew
组合框以其应有的大小显示。为什么会这样?这个问题的解决方案是什么?
注意:我正在使用 PyQt4
。还要注意 buildid
和 changeset
的小部件没有显示任何异常行为。
我删除了 setSizePolicy
和 sizeAdjustPolicy
代码。我还删除了对 self.adjustSize()
的调用。这奏效了。虽然,我不知道为什么。
class RangeSelection(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QGridLayout(self)
self.setLayout(layout)
self._create_widgets()
layout.addWidget(self.select_combo, 1, 1)
layout.addWidget(self.stacked, 1, 2, 5, 1)
self.stacked.currentWidget().setSizePolicy(
QSizePolicy.Preferred, QSizePolicy.Preferred)
self.stacked.currentChanged.connect(self.onCurrentChanged)
def onCurrentChanged(self):
currentw = self.stacked.currentWidget()
currentw.adjustSize()
if currentw == self.releasew:
currentw.sizeAdjustPolicy = QComboBox.AdjustToContentsOnFirstShow
self.adjustSize()
def _create_widgets(self):
self.stacked = QStackedWidget()
self.datew = QCalendarWidget()
self.datew.setVerticalHeaderFormat(QCalendarWidget.
NoVerticalHeader)
self.stacked.addWidget(self.datew)
self.buildidw = QLineEdit()
self.stacked.addWidget(self.buildidw)
self.releasew = QComboBox()
self.releasew.addItems([str(k) for k in sorted(releases())])
self.stacked.addWidget(self.releasew)
self.revw = QLineEdit()
self.stacked.addWidget(self.revw)
self.select_combo = QComboBox()
self.select_combo.addItems(['date', 'buildid', 'release', 'changeset'])
self.select_combo.activated.connect(self.stacked.setCurrentIndex)
我有这段代码,我在 QStackedWidget
中有四个小部件。当我 运行 此代码并将 self.select_combo
中的选择从 date
更改为 release
时,self.releasew
组合框最初显示的大小与 QCalendarWidget
(这显然看起来很糟糕)。但是,当我将我的选择从 release
更改为任何其他值然后返回 release
时,self.releasew
组合框以其应有的大小显示。为什么会这样?这个问题的解决方案是什么?
注意:我正在使用 PyQt4
。还要注意 buildid
和 changeset
的小部件没有显示任何异常行为。
我删除了 setSizePolicy
和 sizeAdjustPolicy
代码。我还删除了对 self.adjustSize()
的调用。这奏效了。虽然,我不知道为什么。