PyQt5 - QDock部件



可停靠視窗是一個子視窗,它可以保持浮動狀態,也可以附加到主視窗的指定位置。QMainWindow 類的主視窗物件保留了一個用於可停靠視窗的區域。此區域位於中心部件周圍。

可停靠視窗可以在主視窗內移動,也可以取消停靠以由使用者移動到新區域。這些屬性由以下**QDockWidget**類方法控制:

序號 方法及描述
1

setWidget()

在停靠視窗區域設定任何QWidget

2

setFloating()

如果設定為true,則停靠視窗可以浮動

3

setAllowedAreas()

設定視窗可以停靠到的區域

LeftDockWidgetArea (左側停靠區域)
RightDockWidgetArea (右側停靠區域)
TopDockWidgetArea (頂部停靠區域)
BottomDockWidgetArea (底部停靠區域)
NoDockWidgetArea (無停靠區域)
4

setFeatures()

設定停靠視窗的特性

DockWidgetClosable (可關閉)
DockWidgetMovable (可移動)
DockWidgetFloatable (可浮動)
DockWidgetVerticalTitleBar (垂直標題欄)
NoDockWidgetFeatures (無特性)

示例

在下面的示例中,頂級視窗是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 PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets 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()

上面的程式碼產生以下輸出。單擊停靠圖示可取消停靠 ListWidget 視窗。雙擊可再次停靠:

QDockWidget Output
pyqt_basic_widgets.htm
廣告
© . All rights reserved.