QCombobox第一次只有更大的尺寸

问题描述:

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时,组合框出现了它应该的大小。这是为什么发生?这个问题的解决方案是什么?我使用PyQt4。还请注意,buildidchangeset的小部件不会显示任何异常行为。QCombobox第一次只有更大的尺寸

+0

你有没有试过评论AdjustToContentsOnFirstShow块? – Schollii

我删除了setSizePolicysizeAdjustPolicy的代码。我也删除了电话self.adjustSize()。这工作。虽然,我不知道为什么。