1. 程式人生 > >PyQt5高階介面控制元件之QDockWidget(八)

PyQt5高階介面控制元件之QDockWidget(八)

QDockWidget

前言

QDockWidget是一個可以停靠在QMainWindow內的視窗控制元件,它可以保持在浮動狀態或者在指定位置作為子視窗附加到主視窗中,QMainWindow類的主視窗物件保留有一個用於停靠視窗的區域,這個區域在控制元件的中央周圍

QDoCKWidget類中的常用方法

方法 描述
setWidget() 在Dock視窗區域設定QWidget
setFloating() 設定Dock視窗是否可以浮動,如果設定為True,則表示可以浮動
setAlllowedAreas() 設定視窗可以停靠的區域
LeftDockWidgetArea:左側停靠區域
RightDockWidgetArea:右側停靠區域
TopDockWidgetArea:頂部停靠區域
BottomDockWidgetArea:底部停靠區域
NoDockWidgetArea:不顯示Widget
setFearures() 設定停靠視窗的功能屬性
DockWidgetClosable:可關閉
DockWidgetMovable:可移動
DockWidgetFloatable:可漂浮
DockWidgetVerticalTitleBar:在左邊顯示垂直的標籤欄
AllDockWidgetFeatures:具有前三種屬性的所有功能
NoDockWidgetFeatures:無法關閉,不能懸浮,不能移動

例項:QDockWidget的使用

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,在其中新增子選單 file=bar.addMenu('File') file.addAction('New') file.addAction('Save') file.addAction('quit') #建立QDockWidget視窗(標題,自身視窗) self.items=QDockWidget('Dockable',self) #例項化列表視窗,新增幾個條目 self.listWidget=QListWidget() self.listWidget.addItem('Item1') self.listWidget.addItem('Item2') self.listWidget.addItem('Item3') self.listWidget.addItem('Item4') #在視窗區域設定QWidget,新增列表控制元件 self.items.setWidget(self.listWidget) #設定dock視窗是否可以浮動,True,執行浮動在外面,自動與主介面脫離,False,預設浮動主視窗內,可以手動脫離 self.items.setFloating(False) #設定QTextEdit為中央小控制元件 self.setCentralWidget(QTextEdit()) #將視窗放置在中央小控制元件的右側 self.addDockWidget(Qt.RightDockWidgetArea,self.items) self.setLayout(layout) self.setWindowTitle('Dock 例子') if __name__ == '__main__': app=QApplication(sys.argv) demo=DockDemo() demo.show() sys.exit(app.exec_())

執行程式,顯示效果如下
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述
可以拖動,停靠在上下左右四個地方,也可以懸浮於主視窗外

程式碼分析

在這個例子中,頂層視窗是一個QMainWindow物件,QTextEdit物件是它的中央小控制元件

self.setCentralWidget(QTextEdit())

首先創造可停靠的視窗Item

self.items=QDockWidget('Dockable',self)

然後,在停靠視窗內新增QListWidget物件

        self.listWidget=QListWidget()
        self.listWidget.addItem('Item1')
        self.listWidget.addItem('Item2')
        self.listWidget.addItem('Item3')
        self.listWidget.addItem('Item4')

        #在視窗區域設定QWidget,新增列表控制元件
        self.items.setWidget(self.listWidget)

最後,停靠視窗放置在中央小控制元件的右側

self.addDockWidget(Qt.RightDockWidgetArea,self.items)

相關檔案及下載地址