2

GtkExpanderのように、qt4にexapdnまたは折りたたんで子を非表示にできるコンテナはありますか?

ドキュメントの gtk エキスパンダー

qt4 デザイナーはまさにそれを持っていますが、カスタム ウィジェットのようです。

qt4デザイナー

4

1 に答える 1

4

いいえ、しかし実装はかなり簡単です。これは非常に基本的な例です。より多くの機能で拡張できます。

ここに画像の説明を入力

from PyQt4 import QtGui
import sys

class ExpanderWidget(QtGui.QWidget):
    def __init__(self, text, widget, parent=None):
        super(ExpanderWidget, self).__init__(parent)

        self.layout = QtGui.QVBoxLayout()

        # better use your own icons
        # these are kind of ugly :)
        style = QtGui.QCommonStyle()
        self.rightArrow = style.standardIcon(QtGui.QStyle.SP_ArrowRight)
        self.downArrow = style.standardIcon(QtGui.QStyle.SP_ArrowDown)

        self.toggle = QtGui.QPushButton(self.downArrow, text)
        self.toggle.clicked.connect(self.toggleWidget)

        self.widget = widget

        self.layout.addWidget(self.toggle)
        self.layout.addWidget(self.widget)
        self.setLayout(self.layout)

    def toggleWidget(self):
        if self.widget.isVisible():
            self.toggle.setIcon(self.rightArrow)
            self.widget.setVisible(False)
        else:
            self.toggle.setIcon(self.downArrow)
            self.widget.setVisible(True)



app = QtGui.QApplication(sys.argv)

secretWidget = QtGui.QLabel('I am a secret widget. I can be hidden!')

expander = ExpanderWidget('I hide a widget', secretWidget)
expander.show()

sys.exit(app.exec_())
于 2012-04-28T16:22:33.403 に答える