2012-01-31 43 views
5

如何創建下拉小部件,例如下拉式QLabel,下拉式QTextBrowser等?Qt/PyQt:我如何創建一個下拉小部件,如QLabel,QTextBrowser等?

例如,我在QTextBrowser中記錄信息,但我不希望它佔用屏幕上的空間。所以我希望能夠點擊一個QTool按鈕並有一個可滾動的QTextBrowser下拉菜單。 (一個QComboBox也可以工作,但我不能僅僅將每個事件添加爲一個單獨的項目 - 我需要文本打包,不會被忽略。因此,下拉式QTextBrowser。)

或者,例如,I想下拉含圖片QLabel,等...

回答

14

創建下拉窗口部件QWidgetAction,並把它添加到工具按鈕的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_())