上一章我们学习了单行的文本框QLineEdit类,下面我们要为多行的文本框的学习坐下准备,总结一下QFrame类和QAbstractScrollArea类

一.QFrame类

1.描述

QFrame的父类是QWIdget,主要用来控制边框的样式,例如突起、凹下、阴影。

下面的图就是各种效果和不同线号出来的效果

2.常用API

a.样式设定

  1. frame.setFrameShape(QFrame.WinPanel) #样式设定
  2. frame.frameShape() #获取样式(int)
  3. #样式枚举值
  4. # QFrame.NoFrame #无样式——返回值0
  5. # QFrame.Box #——返回值1
  6. # QFrame.Panel #——返回值2
  7. # QFrame.WinPanel #闹不大清,和第六个差不多,官方文档不建议使用——返回值3
  8. # QFrame.HLine #横线——返回值4
  9. # QFrame.VLine #竖线——返回值5
  10. # QFrame.StyledPanel #矩形面板,外观取决于当前GUI样式——返回值6

设定的样式效果和上面的图一样(样式可能会和系统版本有差异)。

b.阴影效果

  1. frame.setFrameShadow(QFrame.Sunken)#设置框架阴影效果
  2. frame.frameShadow() #获取框架阴影效果
  3. QFrame.Plain #框架和内容无相对3D效果——返回值16
  4. QFrame.Raised #框架突起显示——返回值32
  5. QFrame.Sunken #框架凹陷,返回值48

c.线宽设定

  1. frame.setLineWidth() #设置外线宽度
  2. frame.lineWidth() #获取外线宽度
  3. frame.setMidLineWidth()#设置中线宽度
  4. frame.midLineWidth() #获取中线宽度
  5. frame.frameWidth() #获取总线宽

要注意一点,有些效果是不仅仅有外线和中线的,我们运行一下这个代码

  1. frame.setFrameShape(QFrame.Box)
  2. frame.setFrameShadow(QFrame.Raised)
  3. frame.setLineWidth(20)
  4. frame.setMidLineWidth(12)
  5. print(frame.frameWidth())

发现打印的线宽是52,在Box的突起样式中是有外线中线和内线的,内线的线宽和外线一致。所以总线宽就是52

d.样式设定的时候可以用管道符“|”所以下面两个代码是一样的效果

  1. #方式1
  2. frame.setFrameStyle(QFrame.Box|QFrame.Raised)
  3. #方式2
  4. frame.setFrameShape(QFrame.Box)
  5. frame.setFrameShadow(QFrame.Raised)

但是用FrameStyle()获取样式则是所有效果的"|"运算。

e.边框矩形限制

  1. frame.setFrameRect(QRect(10,10,10,10)) #设定框架的矩形限制
  2. frame.frameRect() #获取框架矩形范围限制

3.信号

QFame的信号都是继承自QWidget的,没有特殊的信号,就不再说明了。

二.QAbstractScrollArea类

1.描述

由于有些时候控件内部内容需要滚动查看,就把QAbstractScrollArea抽象出来了,它是滚动区域的低级抽象,继承的父类是QFrame。

2.功能作用

QAbstractScrollArea类为一个抽象类,无法直接实例化,我们通过它的一个子类QTextEdit来说明它。

  1. te = QTextEdit(window)

a.设置水平垂直滚动条

  1. te.setHorizontalScrollBar()
  2. te.setVerticalScrollBar()

这个先不讲,因为后面还有专门控件来说明

b.滚动条显示策略

  1. te.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOn) #垂直滚动条策略
  2. te.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded) #水平滚动条策略
  3. te.horizontalScrollBarPolicy() #获取水平滚动条策略
  4. te.verticalScrollBarPolicy() #获取垂直滚动条策略
  5. #滚动条策略枚举值
  6. Qt.ScrollBarAsNeeded #需要时显示——0
  7. Qt.ScrollBarAlwaysOff #滚动条始终关闭——1
  8. Qt.ScrollBarAlwaysOn #滚动条始终显示——2

c.角落控件

我们可以在控件的右下角设置一个控件,可以把QTextEdit()的右下角添加一个按钮

  1. btn = QPushButton('&C',te)
  2. te.setCornerWidget(btn) #设置角落控件
  3. te.cornerWidget() #获取角落控件

出来的效果就是这样的

3.信号

QAbstractScrollArea的信号也是继承父类的,没有特别的信号。这里不再赘述。


总结完毕

GUI学习之十——QFrame和的QAbstractScrollArea学习总结的更多相关文章

  1. JMeter学习(十四)JMeter函数学习(转载)

    转载自 http://www.cnblogs.com/yangxia-test JMeter函数是一些能够转化在测试树中取样器或者其他配置元件的域的特殊值.一个函数的调用就像这样:${_functio ...

  2. 轻松学习JavaScript十八:DOM编程学习之DOM简单介绍

    一DOM概述 DOM(文档对象模型)是HTML和XML的应用程序接口(API).DOM将把整个页面规划成由节点层级构成的文档. DOM描绘了一个层次化的节点树,执行开发者加入,移除和改动页面的某一部分 ...

  3. Python3 学习第十四弹: 模块学习六之re模块 + 正则表达式 (转)

    本文转自 AstralWind 的博客:Python正则表达式指南 特来收藏 1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有 ...

  4. 爬虫学习(十九)——Scrapy的学习及其使用

    Scrapy框架的介绍 Scrapy,非常的强悍,通过python语言编写的,非常知名的爬虫框架 框架工作流程 框架流程图 基本工作流程; 1.引擎向spiders要url 2.引擎将要爬取的url给 ...

  5. 201671010140. 2016-2017-2 《Java程序设计》java学习第十五周

    java学习第十五周 Java的GUI界面设计,框架以及主要部件填充,归置,布局管理,在第十一章和第十二章进行了系统的学习,在这两章的知识奠基下,可以简单的构造一个GUI用户界面,在两周的学习后,可以 ...

  6. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

  7. python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例

    python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...

  8. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  9. Linux学习之十四、管线命令

    Linux学习之十四.管线命令 地址:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_6.php

随机推荐

  1. spring boot 监听器实例

    在日常项目中订单创建成功后,会有类似各式各样的通知.有站内通知.短信通知.微信,app通知. 伪代码: 这里,只用伪代码示例.各式各样的通知 肯定不只一行代码.只是简化.如果后续还要增加各种各样的通知 ...

  2. 容器化部署Cassandra高可用集群

    前提: 三台装有docker的虚拟机,这里用VM1,VM2,VM3表达(当然生产环境要用三个独立物理机,否则无高可用可言),装docker可参见Ubuntu离线安装docker. 开始部署: 部署图 ...

  3. 201772020113李清华《面向对象程序设计(java)》第九周学习总结

    1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2.实验内容和步骤 实验1:用命令行与IDE两种环境下编辑调 ...

  4. C++_注释、枚举、typedef

    #include<iostream> //using namespace std; int main() { /* ************************************ ...

  5. sql day2

    -- 数据的准备 -- 创建一个数据库 create database python_test charset=utf8; -- 使用一个数据库 use python_test; -- 显示使用的当前 ...

  6. HTML5 汉字转化为拼音,带读声,穷举多音字

    1,没别的,像这种没有规则的转化,我们首先需要一个字典文件,字典文件的完整度,决定了转化的成功率与精确度 2,笔者收集了较为完整的字典文件,已上传到博客园,欢迎补充  =>  https://b ...

  7. mysql安装好之后,查询显示MySQL不是内部命令或外部命令问题

    使用cmd来调用MySQL的时候提示错误,错误是说MySQL不是内部或外部命令. 1.如图所示,遇到的mysql命令错误. 2.现在就要查询mysql是安装在哪,我们在计算机里面搜索mysql.exe ...

  8. letecode242有效字母的异位词

    bool isAnagram(char* s, char* t) { ] = {}; ] = {}; int lenS = strlen(s); int lenT = strlen(t); ;i< ...

  9. centos7安装 python3.6,且保留2.7版本

    CENTOS7安装PYTHON3.6 1. 安装python3.6可能使用的依赖# yum install openssl-devel bzip2-devel expat-devel gdbm-dev ...

  10. AVL树实现记录

    https://github.com/xieqing/avl-tree An AVL Tree Implementation In C There are several choices when i ...