Qt / PyQt: Как мне создать выпадающий виджет, такой как QLabel, QTextBrowser и т. Д.? - PullRequest
5 голосов
/ 31 января 2012

Как создать раскрывающийся виджет, такой как раскрывающийся список QLabel, раскрывающийся список QTextBrowser и т. Д .?

Например, я регистрирую информацию в QTextBrowser, но нехочу, чтобы он занимал место на экране.Поэтому я хочу иметь возможность щелкнуть QToolbutton и иметь прокручиваемый раскрывающийся список QTextBrowser.(QComboBox тоже будет работать, но я не могу просто добавить каждое событие как отдельный элемент - мне нужен текст для переноса, а не для исключения. Таким образом, выпадающий список QTextBrowser.)

Или, например,Я хочу выпадающий QLabel, содержащий изображение и т. Д.

1 Ответ

15 голосов
/ 31 января 2012

Создайте 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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...