Pyqt QDockWidget 停靠窗体

网上的一个关于QDockWidget 停靠窗体的教程

代码:

 1 # -*- coding: utf-8 -*-
 2 from PyQt4.QtGui import *
 3 from PyQt4.QtCore import *
 4 import sys
 5
 6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))
 7
 8 class MainWidget(QMainWindow):
 9     def __init__(self,parent=None):
10         super(MainWidget,self).__init__(parent)
11         self.setWindowTitle(self.tr("依靠窗口"))
12
13         te=QTextEdit(self.tr("主窗口"))
14         te.setAlignment(Qt.AlignCenter)
15         self.setCentralWidget(te)
16
17         #停靠窗口1
18         dock1=QDockWidget(self.tr("停靠窗口1"),self)
19         dock1.setFeatures(QDockWidget.DockWidgetMovable)
20         dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea)
21         te1=QTextEdit(self.tr("窗口1,可在Main Window的左部和右部停靠,不可浮动,不可关闭"))
22         dock1.setWidget(te1)
23         self.addDockWidget(Qt.RightDockWidgetArea,dock1)
24
25         #停靠窗口2
26         dock2=QDockWidget(self.tr("停靠窗口2"),self)
27         dock2.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)
28         te2=QTextEdit(self.tr("窗口2,只可浮动"))
29         dock2.setWidget(te2)
30         self.addDockWidget(Qt.RightDockWidgetArea,dock2)
31
32         #停靠窗口4
33         dock4=QDockWidget(self.tr("停靠窗口4"),self)
34         dock4.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)
35         widget4 = QWidget()   # 可引入外部Qwidget
36         dock4.setWidget(widget4)
37         self.addDockWidget(Qt.RightDockWidgetArea,dock4)
38
39         self.tabifyDockWidget(dock2, dock4)
40         dock2.raise_()
41
42         #停靠窗口3
43         dock3=QDockWidget(self.tr("停靠窗口3"),self)
44         dock3.setFeatures(QDockWidget.AllDockWidgetFeatures)
45         te3=QTextEdit(self.tr("窗口3,可在Main Window任意位置停靠,可浮动,可关闭"))
46         dock3.setWidget(te3)
47         self.addDockWidget(Qt.BottomDockWidgetArea,dock3)
48 if __name__ == ‘__main__‘:
49     app=QApplication(sys.argv)
50     main=MainWidget()
51     main.show()
52     app.exec_()  

效果:

解释:

停靠窗口1只可在主窗口的左边和右边停靠,停靠窗口2只可在浮动和在右停靠两种状态间切换,并且不可移动,停靠窗口3可实现停靠窗口的各个状态, 停靠窗口4和窗口2叠加

实例化一个dock title 为标题 self 为parent 因为QDockWidget 不添加到布局管理器中 所以我们需要传一个parent 给他

dock1=QDockWidget(self.tr("停靠窗口1"),self)    

设置dock是否可以关闭拉出等    #参数还有 QDockWidget.DockWidgetClosable 可以关闭 DockWidgetMovable 可以移动

dock1.setFeatures(QDockWidget.DockWidgetMovable)

设置dock只能在左边 或者右边显示    #allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas

dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea)

添加一个label控件

dock1.setWidget(te1)  

添加dock到主窗口第一个参数为显示位置

self.addDockWidget(Qt.RightDockWidgetArea,dock1)

两个停靠窗口叠加

self.tabifyDockWidget(dock2, dock4) 

默认dock2为首标签

dock2.raise_()

更多链接:http://www.linuxidc.com/Linux/2012-06/63652p15.htm

时间: 2024-10-12 05:48:38

Pyqt QDockWidget 停靠窗体的相关文章

向停靠窗体内增加自定义控件

如果已创建好了自定义控件ucToolbox, 首先要在调用的窗体中定义这个控件 private ucToolbox ucToolbox1; this.ucToolbox1 = new Endv.WinForm.Docking.ucToolbox(); 设置控件的一些属性 1 // 2 // ucToolbox1 3 // 4 this.ucToolbox1.Dock = System.Windows.Forms.DockStyle.Fill; 5 this.ucToolbox1.Location

c# 停靠窗体

public partial class FrmAnchor : Form, IMessageFilter { public FrmAnchor(Control parentControlc, Control keyControl) { InitializeComponent(); this.Size = keyControl.Size; this.HandleCreated += FrmDownBoard_HandleCreated; this.HandleDestroyed += FrmDo

QT开发(六)——QT容器组件

QT开发(六)--QT容器组件 QT中有九种容器组件,分别是组合框QGroupBox.滚动区QScrollArea.工具箱QToolBox.选项卡QTabWidget.控件栈QWidgetStack.框架QFrame.组件QWidget.MDI窗口显示区QMdiArea.停靠窗口QDockWidget. 一.QGroupBox分组框 1.QGroupBox组件简介 QGroupBox为构建分组框提供了支持.分组框通常带有一个边框和一个标题栏,作为容器部件来使用,在其中可以布置各种窗口部件.分组框

停靠窗口

代码: 1 #coding: utf-8 2 from PyQt4.QtCore import * 3 from PyQt4.QtGui import * 4 import sys 5 6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8")) 7 8 class MainWidget(QMainWindow): 9 def __init__(self, parent=None): 10 super(MainWidget, s

高级停靠(Dock)技术的实现

所谓停靠就是可以用鼠标拖动窗体或者控件,并将其从一个父窗体移出或者移动到另一个父窗体上,可以按水平,垂直方向整齐排列, 并且可以停靠在分页控制组件上.下面的示意图是一个Delphi IDE的窗口停靠示意图: 考察一些常用的软件如Office等大型软件,会发现大多提供窗体停靠的功能.微软的MFC很早就引入了工具条的拖放功能,可以将工具条上窗口上边拖放到窗口下边.而Borland则最早在Delphi 4中开始引入停靠功能支持,它实际上就是基于前面我们讲到的VCL拖放技术基础之上的,后面我们会看到两者

C#中使用WeiFenLuo.WinFormsUI.Docking.dll实现窗口停靠效果

很酷的效果,很值得好好去学习的哈. 重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--->>右键--->>选择项--->>浏览--- >>weiFenLuo.winFormsUI.Docking.dll--->>确定.此时工具箱出现DockPanel控件.这以上步骤仅是把DockPanel控件添加到工具箱中.

PyQt5创建第一个窗体(正规套路)

一.Pyqt5 创建第一个窗体 很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法.使用设计器的好处是直观.维护方便,尤其开发复杂窗体的效率高. 但是每次修改ui文件后,需要重新生成py文件,会将原来的内容覆盖掉,为了避免这种情况,引入了一个中间类.主要步骤如下: 1使用QtDesigner创建一个简单的对话框,保存成simpleDialog.ui. 2使用cmd,进入simpleDialog.ui文件所在的目录,运行命令pyuic5 simpleDialog.ui >ui_

WeiFenLuo.winFormsUI.Docking.dll的使用(停靠效果)

1.  重置工具箱: 新建一个WinForm程序,项目名称为TestDockPanelControl.选中Form1窗体后选择工具箱--->>新建个添加选项卡命名为WeiFenLuo--->>右键--->>选择项--->>浏览--- >>weiFenLuo.winFormsUI.Docking.dll--->>确定.此时工具箱出现DockPanel控件.这以上步骤仅是把DockPanel控件添加到工具箱中. 1.建立一个WinForm

PyQt5笔记(01) -- 创建空白窗体

本节主要介绍如何创建一个PyQt的空白窗体 1 import sys 2 from PyQt5.QtWidgets import QApplication, QWidget 3 from PyQt5.QtGui import QIcon 4 5 class App(QWidget): 6 7 def __init__(self): 8 super().__init__() 9 self.titie = "QT simple window" 10 """用于