Qt/PyQt:如何创建下拉式小部件,比如QLabel、QTextBrowser等?

6
如何创建下拉式小部件,例如下拉式QLabel、下拉式QTextBrowser等?
例如,我在QTextBrowser中记录信息,但我不希望它占用屏幕空间。因此,我想能够单击QToolbutton并使可滚动的QTextBrowser下拉。(QComboBox也可以,但我不能将每个事件作为单独的项添加——我需要文本换行,而不是省略。因此,需要下拉式QTextBrowser。
或者,例如,我希望有一个包含图片等内容的下拉式QLabel...
1个回答

17

为下拉小部件创建QWidgetAction,并将其添加到工具按钮的菜单中:

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_())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接