1. 程式人生 > 實用技巧 >Qt(Python+Qt)QMainWindow的splitDockWidget方法將QDockWidget停靠窗分割排列

Qt(Python+Qt)QMainWindow的splitDockWidget方法將QDockWidget停靠窗分割排列

主視窗的splitDockWidget方法用於將一個停靠窗佔據的空間分割成兩部分,原有停靠窗放置在第一部分的區域,另一個停靠窗放置在第二部分的區域。呼叫語法:

splitDockWidget( QDockWidget first, QDockWidget second, Qt.Orientation orientation)
說明:
  • orientation:指定分割方向,是水平分隔還是垂直分隔,如果水平分隔,則這兩個停靠窗水平方向並列,first在左second在右,如果是垂直分隔,則兩個停靠窗上下排列,first在上second在下
  • 如果第一個停靠窗已經是選項卡化停靠窗,則第二個停靠窗將作為新選項卡新增,而不是作為第一個的鄰居,這是因為單個選項卡只能包含一個停靠部件,此時splitDockWidget的效果與tabifyDockWidget效果相同
  • splitDockWidget實際使用時更多的是用於排列相關停靠視窗使用,也即對停靠視窗通過程式碼進行排列調整
案例:

要將ui設計的一個如下垂直佈局的主視窗介面:

上面ui中用了三個停靠窗,從上到下分別為d3、d2、d1。如果將它們排列成一個如下的介面:

程式碼如下:

1     self.addDockWidget(QtCore.Qt.TopDockWidgetArea, self.d1)
2     self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.d2)
3     self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.d3)

如果要將其設計成一個如下執行的介面:

程式碼如下:

1         self.addDockWidget(QtCore.Qt.TopDockWidgetArea, self.d1)
2         #self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.d2)
3         #self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.d3)
4 
5         self.splitDockWidget(self.d1, self.d2,Qt.Vertical)
6
self.splitDockWidget(self.d2,self.d3,Qt.Horizontal)

注意:上面程式碼中註釋的語句與不註釋效果一樣。

上面兩種不同的介面效果,第一個因為沒有采用分隔排列,但d2、d3分別放置在左邊和右邊,由於佈局的緣故,佔了下面所有的空間,而第二種方式採用了分割,d3分割了d2的空間,因此二者沒有佔滿整個主視窗的空間。

其實上面兩個例子還不能完整體現splitDockWidget的作用,因為停靠窗少了點,如果停靠窗很多,排列更復雜的排列,就能發揮splitDockWidget的功用。