- 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 - 可停靠視窗部件 (QDockWidget)
可停靠視窗是一個子視窗,可以保持浮動狀態,也可以附加到主視窗的指定位置。QMainWindow 類的主視窗物件有一個為可停靠視窗保留的區域。此區域位於中心視窗部件周圍。
可停靠視窗可以在主視窗內移動,也可以取消停靠以由使用者移動到新區域。這些屬性由以下 **QDockWidget** 類方法控制:
| 序號 | 方法及描述 | |||||
|---|---|---|---|---|---|---|
| 1 |
setWidget() 在停靠視窗區域設定任何 QWidget |
|||||
| 2 |
setFloating() 如果設定為 true,則可停靠視窗可以浮動 |
|||||
| 3 |
setAllowedAreas() 設定視窗可以停靠到的區域
|
|||||
| 4 |
setFeatures() 設定停靠視窗的功能
|
示例
在以下示例中,頂級視窗是 QMainWindow 物件。QTextEdit 物件是其中心視窗部件。
self.setCentralWidget(QTextEdit())
首先建立一個可停靠視窗。
self.items = QDockWidget("Dockable", self)
將 QListWidget 物件新增為停靠視窗。
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
可停靠物件放置在中心視窗部件的右側。
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
完整的程式碼如下:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class dockdemo(QMainWindow):
def __init__(self, parent = None):
super(dockdemo, self).__init__(parent)
layout = QHBoxLayout()
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
file.addAction("save")
file.addAction("quit")
self.items = QDockWidget("Dockable", self)
self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)
self.items.setFloating(False)
self.setCentralWidget(QTextEdit())
self.addDockWidget(Qt.RightDockWidgetArea, self.items)
self.setLayout(layout)
self.setWindowTitle("Dock demo")
def main():
app = QApplication(sys.argv)
ex = dockdemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
以上程式碼產生以下輸出:
廣告