博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PySide中QtGui.QFrame的用法

Posted on 2016-05-17 18:09  SolHe  阅读(1449)  评论(0编辑  收藏  举报

最近一位同事的出现让我重新正视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对象中添加控件。