- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境搭建
- PyQt - Hello World
- PyQt - 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號與槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和繫結訊號
- PyQt - 使用 PyQtSignal 建立新訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本控制元件
- PyQt - 基本控制元件
- PyQt - QLabel 控制元件
- PyQt - QLineEdit 控制元件
- PyQt - QPushButton 控制元件
- PyQt - QRadioButton 控制元件
- PyQt - QCheckBox 控制元件
- PyQt - QComboBox 控制元件
- PyQt - QSpinBox 控制元件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 控制元件
- PyQt - QFontComboBox 控制元件
- PyQt - QDoubleSpinBox 控制元件
- PyQt - QToolBox 控制元件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放操作
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫處理
- PyQt 核心知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt - QSplitter 控制元件
這是一種高階的佈局管理器,它允許透過拖動子控制元件之間的邊界來動態更改子控制元件的大小。分割器控制元件提供一個可以拖動以調整控制元件大小的控制代碼。
QSplitter 物件中的控制元件預設情況下水平排列,儘管方向可以更改為 Qt.Vertical。
以下是 QSplitter 類的 方法和訊號:
| 序號 | 方法及描述 |
|---|---|
| 1 |
addWidget() 將控制元件新增到分割器的佈局中 |
| 2 |
indexOf() 返回控制元件在佈局中的索引 |
| 3 |
insertWidget() 在指定索引處插入控制元件 |
| 4 |
setOrientation() 將分割器的佈局設定為 Qt.Horizontal 或 Qt.Vertical |
| 5 |
setSizes() 設定每個控制元件的初始大小 |
| 6 |
count() 返回分割器控制元件中的控制元件數量 |
splitterMoved() 是 QSplitter 物件在每次拖動分割器控制代碼時發出的唯一訊號。
示例
以下示例中有一個分割器物件 splitter1,其中水平添加了一個框架和一個 QTextEdit 物件。
topleft = QFrame() textedit = QTextEdit() splitter1.addWidget(topleft) splitter1.addWidget(textedit)
這個 splitter1 分割器物件和一個底部的框架物件垂直新增到另一個分割器 splitter2 中。最後,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()
以上程式碼產生以下輸出:
廣告