Pyqt-qsplitter-widget

提供:Dev Guides
移動先:案内検索

PyQt-QSplitterウィジェット

これは、子ウィジェットの境界をドラッグすることで、子ウィジェットのサイズを動的に変更できる、もう1つの高度なレイアウトマネージャーです。 Splitterコントロールは、ドラッグしてコントロールのサイズを変更できるハンドルを提供します。

*QSplitter* オブジェクトのウィジェットはデフォルトで水平に配置されますが、向きはQt.Verticalに変更できます。

以下は、QSplitterクラスのメソッドとシグナルです-

Sr.No. Methods & Description
1

addWidget()

ウィジェットをスプリッターのレイアウトに追加します

2

indexOf()

レイアウト内のウィジェットのインデックスを返します

3

insetWidget()

指定されたインデックスにウィジェットを挿入します

4

setOrientation()

スプリッターのレイアウトをQt.Horizo​​ntalまたはQt.Verticalに設定します

5

setSizes()

各ウィジェットの初期サイズを設定します

6

count()

分割ウィジェットのウィジェットの数を返します

splitMoved()は、スプリッターハンドルがドラッグされるたびにQSplitterオブジェクトによって放出される唯一の信号です。

次の例には、フレームとQTextEditオブジェクトが水平方向に追加されるスプリッターオブジェクト、splitter1があります。

topleft = QFrame()
textedit = QTextEdit()
splitter1.addWidget(topleft)
splitter1.addWidget(textedit)

このスプリッターオブジェクトsplitter1とボトムフレームオブジェクトは、別のスプリッターsplitter2に垂直に追加されます。 オブジェクトスプリッターが最終的にトップレベルウィンドウに追加されます。

bottom = QFrame()
splitter2 = QSplitter(Qt.Vertical)
splitter2.addWidget(splitter1)
splitter2.addWidget(bottom)

hbox.addWidget(splitter2)
self.setLayout(hbox)

完全なコードは次のとおりです-

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class Example(QWidget):

   def __init__(self):
      super(Example, self).__init__()

   self.initUI()

   def initUI(self):

      hbox = QHBoxLayout(self)

      topleft = QFrame()
      topleft.setFrameShape(QFrame.StyledPanel)
      bottom = QFrame()
      bottom.setFrameShape(QFrame.StyledPanel)

      splitter1 = QSplitter(Qt.Horizontal)
      textedit = QTextEdit()
      splitter1.addWidget(topleft)
      splitter1.addWidget(textedit)
      splitter1.setSizes([100,200])

      splitter2 = QSplitter(Qt.Vertical)
      splitter2.addWidget(splitter1)
      splitter2.addWidget(bottom)

      hbox.addWidget(splitter2)

      self.setLayout(hbox)
      QApplication.setStyle(QStyleFactory.create('Cleanlooks'))

      self.setGeometry(300, 300, 300, 200)
      self.setWindowTitle('QSplitter demo')
      self.show()

def main():
   app = QApplication(sys.argv)
   ex = Example()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

上記のコードは、次の出力を生成します-

QSplitterウィジェットの出力