停靠窗口-程序员宅基地

技术标签: c/c++  

代码:

 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, self).__init__(parent)
11         self.setWindowTitle(self.tr("依靠窗口"))
12         #定义一个 QTextEdit 对象作为主窗口,并把此编辑框设为 MainWindow 的中央窗体。
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         #停靠窗口3
33         dock3 = QDockWidget(self.tr("停靠窗口3"), self)
34         dock3.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)
35         te3 = QTextEdit(self.tr("窗口3,可在Main Window任意位置停靠,可浮动,可关闭"))
36         dock3.setWidget(te3)
37         self.addDockWidget(Qt.RightDockWidgetArea, dock3)
38 
39 app = QApplication(sys.argv)
40 main = MainWidget()
41 main.show()
42 app.exec_()

设置停靠窗口的一般流程为:

  1) 创建一个 QDockWidget 对象的停靠窗体。

  2)设置此停靠窗体的属性,通常调用 setFeatures()及 setAllowedAreas()两个方法。

  3)新建一个要插入停靠窗体的控件,本实例中为 QTextEdit,也可为其他控件,常用的一般为 QListWidget 和 QTextEdit。

  4)把控件插入停靠窗体,调用 QDockWidget 的 setWidget()方法。

  5)使用 addDockWidget()方法在 MainWindow 中加入此停靠窗体。

本实例的 3 个停靠窗体都是按此流程实现的,此处需要重点介绍的是设置停靠窗体状态的方法 setAllowedAreas()和 setFeatures()。

其中 setAllowedAreas()方法设置停靠窗体可停靠的区域,原型如下:

 

  setAllowedAreas (self, Qt.DockWidgetAreas)
参数 Qt.DockWidgetAreas 指定了停靠窗体可停靠的区域,包括以下几种。
  Qt.LeftDockWidgetArea:可在主窗口的左侧停靠。
  Qt.RightDockWidgetArea:可在主窗口的右侧停靠。
  Qt.TopDockWidgetArea:可在主窗口的顶端停靠。
  Qt.BottomDockWidgetArea:可在主窗口的底部停靠。
  Qt.AllDockWidgetArea:可在主窗口任意(以上四个)部位停靠。
  Qt.NoDockWidgetArea:可停靠在插入处。
  各区域设定可采用或(|)的方式进行设定

setFeatures()方法设置停靠窗体的特性,原型如下:
  setFeatures (self, DockWidgetFeatures)
参数 QDockWidgetFeatures 指定停靠窗体的特性,包括以下几种。
  QDockWidget.DockWidgetClosable:停靠窗可关闭,右上角的关闭按钮。
  QDockWidget.DockWidgetMovable:停靠窗可移动。
  QDockWidget.DockWidgetFloatable:停靠窗可浮动。
  QDockWidget.AllDockWidgetFeature:此参数表示拥有停靠窗的所有特性。
  QDockWidget.NoDockWidgetFeature:不可移动,不可关闭,不可浮动。
  此参数也可采用或(|)的方式对停靠窗进行特性的设定

 

转载于:https://www.cnblogs.com/nju2014/p/4540352.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34281537/article/details/94161720

智能推荐

省级森林防火应急指挥系统_如何在电脑上安装森林防火指挥系统-程序员宅基地

文章浏览阅读645次。监控指挥中心兼顾监控室、值班室、设备室、调度指挥室等,按功能分区,合理布局。主要功能是远程监看多个监控点传来的图像,必要时对前端摄像头进行控制、视频录像和火情报警,把图像传输到上级管理部门及林业局各级领导办公室,便于随时了解火情,进行指挥调度等。_如何在电脑上安装森林防火指挥系统

网络(三)之VTP的原理及配置(cisco)_vtp配置实验原理-程序员宅基地

文章浏览阅读3.5k次,点赞3次,收藏19次。VTP的原理及配置本期我们主要讲一下思科设备特有的一种VLAN中继协议,也被称为虚拟局域网干道协议。在现实的运用十分广泛,主要实现vlan之间的同步。什么是VTPVTP(VLAN Trunking Protocol):是VLAN中继协议,也被称为虚拟局域网干道协议。它是思科私有协议。作用是十几台交换机在企业网中,配置VLAN工作量大,可以使用VTP协议,把一台交换机配置成VTP Server..._vtp配置实验原理

NCTF-2019-Crypto部分 复现_ncyf019-程序员宅基地

文章浏览阅读300次。考点:维吉尼亚,Pollard’s p-1光滑,AMM,(知e,d,c,求p,q)_ncyf019

整理几个高质量Java自学网站_java学习网站除了慕课网-程序员宅基地

文章浏览阅读1.8k次。大家在自学java的时候,是否会感到枯燥。虽然视频都会分章节讲解,但是总感觉很乱?那是因为你没有比较系统、全面的了解java语言。没有将java应用到实际项目中,那么有哪些网站可以帮助我们更好的学习java?以下汇总了一些在java自学的道路上会用到的网站,供大家参考。1、慕课网慕课网是许多入门IT行业最常访问的网站了,它里面除了大量的免费课程之外,还有许多优质的付费课程..._java学习网站除了慕课网

Ubuntu中文件及目录的基本操作_ubuntu huoquwenjianmulu-程序员宅基地

文章浏览阅读9.4k次。mkdir命令(创建目录)通过 mkdir 命令可以实现在指定位置创建以指定的文件名命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。命令格式:mkdir [选项] dirname。命令中的 [选项]:-m:用于对新建目录设置存取权限_ubuntu huoquwenjianmulu

如何学习Python,以及新手如何入门?_管理学科研用python需要学习什么-程序员宅基地

文章浏览阅读92次。在学习Python之前,首先要确定自己学习Python的方向和目的。不知道Python有哪些方向的可以看下面这张图:_管理学科研用python需要学习什么

随便推点

Java Web学习(7):JSP基础语法_java web构建一个主题网站进一步掌握jsp的基础语法-程序员宅基地

文章浏览阅读2.6k次。一个JSP页面可以被分为以下几部份: 1)静态数据,如HTML; 2)JSP指令,如include指令; 3)JSP脚本元素和变量; 4)JSP动作; 5)用户自定义标签; 一静态数据 静态数据在输入文件中的内容和输出给HTTP响应的内容完全一致。此时,该JSP输入文件会是一个没有内_java web构建一个主题网站进一步掌握jsp的基础语法

Mybatis学习之路04_数据库加密连接_java mybaits 访问使用加密数据库密码-程序员宅基地

文章浏览阅读319次。主要思想:写一个数据加密工具类,将加密后的用户名、密码放在外部属性配置文件中(这里我们放在db.properties里),在创建SqlseetionFacroty时,将外部数次那个文件中的用户名和密码取出来,并解密,再通过Properties类中的setProperty方法,将解密后的参数放进db.properties里(但db.properties文件里并没有被改变),然后通过SqlSessio..._java mybaits 访问使用加密数据库密码

【MoveIt2-humble】入门教程(翻译自官方文档)二:在 RViz 中实现可视化_moveit2教程-程序员宅基地

文章浏览阅读1.9k次,点赞4次,收藏14次。本系列教程共四节,环境为:Ubuntu22.04ros2-humbleMoveIt2-humble官方文档上的教程,从moveit1的melodic到moveit2的foxy基本一致,但是从最新的humble开始有了很大的变化,其中之一便是 lambda表达式 的广泛使用。本节为教程的第二节,会介绍一个工具(moveit_visual_tools),它能够通过在 rviz 中呈现可视化,从而帮助你更容易理解你的 Moveit 应用在做什么。前提是需要先完成之前内容,可以看我的这篇博文:https://_moveit2教程

struts2 从一个action到另一个action传参的问题!_action用?传参-程序员宅基地

文章浏览阅读790次。 //针对订单修改之后返回当条订单 HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST); request.setAttri..._action用?传参

智能安防赛道上,云从科技是展翅高飞还是落地成盒-程序员宅基地

文章浏览阅读159次。不久前,一幅由人工智能所作的《埃德蒙·贝拉米》画像在纽约佳士得以43.25万美元(约为300万人民币)的高价拍出,拍出价格远高与同场的毕加索作品。此次事件的爆出,在给人们带来“一幅由人工智能所作的画像竟然能拍出如此天价”感叹的同时,也让市场感受到CV作为人工智能领域的重要领域之一,其在市场上的商业化落地范围在不断扩大。近年来,随着行业的快速发展与技术的逐渐成熟,市场上涌现出不少计算机视觉企业,..._南京宇旷则然信息技术有限公司

AngularJS 的小demo——表头排序+表格搜索(过滤器)_表头排序功能 demo-程序员宅基地

文章浏览阅读339次。使用AngularJS简单实现表头排序和表格搜索的功能,效果如下:点击表头中的一项,可以根据该列属性对数据进行排序: 程序如下:[html] view plain copy> html lang="en" ng-app="a3_4"> head> met_表头排序功能 demo

推荐文章

热门文章

相关标签