[转载]使用Qt设计师开发设计Maya脚本界面

Maya自从2011版本开始,使用了全新的Qt界面框架,由此给整个Maya的外观带来的翻天覆地的变化,更加灵活,更加美观。

不仅如此,由于采用的Qt框架,使得我们可以使用Qt设计师(Qt designer),一个所见即所得的强大界面设计工具。使用Qt设计师,你再也不用一行一行地写MelMaya Python代码来堆砌界面了,只需用鼠标点几下按钮,就可以快速生成一个界面。

下面,我们来试试用Qt设计师来设计一个能够创建各种类型几何体的Maya脚本程序界面。

打开Qt设计师,创建一个新空对话框

[转载]使用Qt设计师开发设计Maya脚本界面

 

从左边的部件栏中选择两个label,一个linu Edit,一个combo box部件,一个check Box拖放到对话框,并安排好大致的位置,摆放位置时不用太精确,一会儿我们会用布局工具来安排它们的位置。然后在再拖放两个按钮push button到对话框的底部,如下图。

[转载]使用Qt设计师开发设计Maya脚本界面

点击对话框的标题栏,选择窗口部件,在Qt设计师的右侧部件属性栏,找到窗口的windowTitle属性,将dialog1改为创建各种几何体

用同样的方法,修改labelcheckBoxpushButton部件的text属性,如下图:

[转载]使用Qt设计师开发设计Maya脚本界面

选择line Edit部件,在属性编辑栏里,将部件的objectName属性改为geometryName。这是部件的名字,每个部件在创建时都会用一个默认的唯一名字。改名字这个步骤可以不用做,但是为了在编写脚本代码时能更明确的知道你在使用哪个部件,最好给部件取一个唯一的有意义的名字,而不是默认的lineEdit1lineEdit2这样的名字。

[转载]使用Qt设计师开发设计Maya脚本界面

用同样的方法,分别给对话框窗体、comboboxcheckBox,两个pushButton命名为:

createGeoDialog

typeComboBox

historyCheckBox

okButton

cancelButton  

我们完成了窗体界面设计,保存界面,文件名保存为createGeometry.ui

下面开始编程。选择okButton,在属性编辑器栏,点击“添加动态属性”按钮,弹出菜单选择“字符串”。

[转载]使用Qt设计师开发设计Maya脚本界面

一、属性名称框内填写“-command”,这是Mel命令button的一个参数标记,这个参数用来指定点击按钮时要执行的操作命令,因为这个按钮是用Qt生成的,所以,我们要把Mel button命令的参数标记定义为Qt button的一个动态属性。

[转载]使用Qt设计师开发设计Maya脚本界面

okButton的属性编辑器栏,在新加的动态属性-command的数值栏里,我们填上“createGeo()”,这是按钮被点击时要执行的过程名,这个过程目前还不存在,我们一会儿会完成它。

[转载]使用Qt设计师开发设计Maya脚本界面

用同样的方式给cancelButton加上动态属性-command,属性值为:deleteUI createGeoDialog,这是Mel命令,它的作用是删除当前对话框。

现在编辑typeComboBox部件,双击这个部件,弹出“编辑组合框”,点击加号按钮,依次增加6个新项目,命名为“立方体”,“球体”,“圆柱体”,“圆锥体”,“圆环体”,“弹簧”。

至此,所有的Qt界面设计工作都完成了,保存界面文件,退出Qt设计师。

现在回到Maya,打开脚本编辑器窗口,用loadUI命令来调用ui文件,如下:

string$dialog =`loadUI -uiFile "{储存ui文件的目录}/createGeometry.ui"`;

showWindow $dialog;

[转载]使用Qt设计师开发设计Maya脚本界面

运行命令,显示出窗体,Qt comboBox按钮会被当做optionMenu,你可以选择各个选项。QtlineEdit部件会被当做textField控件,checkBox、“取消”按钮也能正常工作,只有“确定”按钮点击时会弹出错信息,告诉你没有createGeo的过程,这是下一步要做的。

下面是createGeo()过程代码

global proc createGeo()

{

    string $name=`textField -q -tx geometryName`;

    string $type=`optionMenu -q -v typeComboBox`;

    int $history=`checkBox -q -v historyCheckBox`;

    switch ($type)

    {

        case "立方体":

            polyCube -name $name -ch $history;

            break;

        case "球体":

            polySphere -name $name -ch $history;

            break;       

        case "圆柱体":

            polyCylinder -name $name -ch $history;

            break;

        case "圆锥体":

            polyCone -name $name -ch $history;

            break;

        case "圆环体":

            polyTorus -name $name -ch $history;

            break;

        case "弹簧":

            polyHelix -name $name -ch $history;

            break;

    }    

}

代码中各个控件的名字就是在Qt设计师中我们命名的部件名字,okButton按钮的-command属性及属性值,实际上就是实现了如button -command  createGeo okButton这样的Mel命令。

运行上述代码后,在窗体中就可以创建各种多边形几何体了。

结论:

使用Qt设计师,我们就再不用像以前那样敲Mel命令一行一行构建界面代码了,既省心,又容易修改,错误也少。只要摆好部件,精心设置好各个部件的名字,再给部件创建与Mel命令参数标记同名的动态属性并设置属性值,剩下的一切就交给QtloadUI命令就可以了。

Qt设计师虽然很强大,但是和Maya一起使用时还是有限制的,你只能用它创建Maya本身才用的界面部件,不能使用Mel命令不能实现的部件,比如像spinBoxtimeEdit等部件是不能在Maya中使用的,这是让人感到遗憾的地方。

尽管如此,Qt设计师所见即所得的界面设计与编辑能力,还是大大方便和简化了我们的界面编程工作。

如果想在Maya中使用Qt的所有界面部件,就只能给Maya安装PyQt模块,这样就可以用python脚本来任意编写Qt界面了,安装PyQt的方法可以参看我的博文《maya2013安装pyqt4的方法

 

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值