• GUI学习之十一——QFrame和的QAbstractScrollArea学习总结


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

    一.QFrame类

    1.描述

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

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

     

    2.常用API

    a.样式设定

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

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

    b.阴影效果

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

     c.线宽设定

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

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

    frame.setFrameShape(QFrame.Box) 
    frame.setFrameShadow(QFrame.Raised)
    frame.setLineWidth(20)   
    frame.setMidLineWidth(12)
    print(frame.frameWidth())

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

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

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

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

    e.边框矩形限制

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

    3.信号

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

    二.QAbstractScrollArea类

    1.描述

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

    2.功能作用

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

    te = QTextEdit(window)

    a.设置水平垂直滚动条

    te.setHorizontalScrollBar()
    te.setVerticalScrollBar()

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

    b.滚动条显示策略

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

    c.角落控件

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

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

    出来的效果就是这样的

    3.信号

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


    总结完毕

  • 相关阅读:
    mysql
    selenium
    解决servlet响应乱码问题
    flask后端的跨域问题
    python中并发----线程的启动和停止
    react-native 自定义组件规范
    react-native 高阶组件笔记
    class-dump安装及使用
    jekyll的安装
    取巧的json转model声明代码的工具
  • 原文地址:https://www.cnblogs.com/yinsedeyinse/p/10781167.html
Copyright © 2020-2023  润新知