2012-01-31 15 views
5

Açılır QLabel, açılır QTextBrowser vb. Gibi bir açılır pencere öğesi nasıl oluşturulur? Örneğin, bir QTextBrowser'de bilgi kaydediyorum, ancak ekranda yer kaplamak istemiyorum. Bu yüzden bir QToolbutton'u tıklatıp kaydırılabilir bir QTextBrowser açılır menüsüne sahip olmak istiyorum. (Bir QComboBox da işe yarayacaktı, ancak her olayı ayrı bir öğe olarak ekleyemiyorum - kaydırılacak olan metne ihtiyacım var, bu yüzden bir açılır QTextBrowser.)Qt/PyQt: QLabel, QTextBrowser, vb. Gibi bir aşağı açılan pencere öğesi nasıl oluşturulur?

Ya da örneğin QLabel resmini içeren bir açılır, vb ...

cevap

14

açılan widget için bir QWidgetAction oluşturun ve eklemek istediğiniz aracı düğmeli en menu:

from PyQt4 import QtGui, QtCore 

class Window(QtGui.QWidget): 
    def __init__(self): 
     QtGui.QWidget.__init__(self) 
     layout = QtGui.QHBoxLayout(self) 
     self.button = QtGui.QToolButton(self) 
     self.button.setPopupMode(QtGui.QToolButton.MenuButtonPopup) 
     self.button.setMenu(QtGui.QMenu(self.button)) 
     self.textBox = QtGui.QTextBrowser(self) 
     action = QtGui.QWidgetAction(self.button) 
     action.setDefaultWidget(self.textBox) 
     self.button.menu().addAction(action) 
     layout.addWidget(self.button) 

if __name__ == '__main__': 

    import sys 
    app = QtGui.QApplication(sys.argv) 
    window = Window() 
    window.resize(100, 60) 
    window.show() 
    sys.exit(app.exec_())