• PySide中QtGui.QFrame的用法


    最近一位同事的出现让我重新正视PySide中designer这个工具的强大之处,通过QtGui.QObject.setGeometry(QtCore.QRect())这个最简单直接的方法可以完成很多复杂的界面绘制,从而摆脱QtGui.QGridLayout(),QVBoxLayout(),QHBoxLayout()三个Layout()对象的束缚。

    这次matchmove组需要一个工具能够将maya工程中所选模型输出为abc文件,以该abc文件为基础自动生成一个nuke工程,继而将该nuke工程提交本地渲染或者deadline农场进行渲染。所有功能集成在一个工具中,就需要考虑到界面的整洁有序了,我决定使用QtGui.QFrame对象来划分UI区域,最终效果如图:

     

    黑色方框将界面划分为三个区域,看着不至于凌乱。

    附上一段Logo部分的代码如下:

    logoLabel      = QtGui.QLabel("<font size='12' color='gray'><B>RENDER WIREFRAME TOOL</B></font>")
    
    logolayout     = QtGui.QVBoxLayout()
    
    logolayout.addWidget(logoLabel)
    
    self.frame1 = QtGui.QFrame(self)
    
    self.frame1.setLayout(logolayout)
    
    self.frame1.setGeometry(QtCore.QRect(5, 5, 390, 100))
    
    self.frame1.setFrameShape(QtGui.QFrame.StyledPanel)
    
    self.frame1.setFrameShadow(QtGui.QFrame.Raised)

    QtGui.QFrame继承自widgets类,意味着除了

    def drawFrame (arg__1)
    
    def frameRect ()
    
    def frameShadow ()
    
    def frameShape ()
    
    def frameStyle ()
    
    def frameWidth ()
    
    def lineWidth ()
    
    def midLineWidth ()
    
    def setFrameRect (arg__1)
    
    def setFrameShadow (arg__1)
    
    def setFrameShape (arg__1)
    
    def setFrameStyle (arg__1)
    
    def setLineWidth (arg__1)
    
    def setMidLineWidth (arg__1)

    这一系列自有方法外,QtGui.QFrame也可以使用widgets类的方法。在代码中,我创建了一个logolayout,将控件添加到logolayout中,再通过setLayout这个属于widgets的方法将logolayout传递给QFrame对象,通过这种方式就可以很轻松的在QFrame对象中添加控件。

  • 相关阅读:
    SWT中如何居中显示?
    项目一 默认构造函数和带参数的构造函数
    解决ubuntu中java1.6显示中文乱码问题
    网络程序为什么要处理SIGPIPE
    SQL 数据类型大全
    poj1275 差分约束
    Oracle分组
    Android利用ViewPager实现滑动广告板
    扩展spring mvc的拦截器,实现AOP的环绕增加效果
    [Ext.Net]GridPanel之存储过程分页Sql版本
  • 原文地址:https://www.cnblogs.com/hksac/p/5502667.html
Copyright © 2020-2023  润新知