Maya教程之使用Qt设计师开发设计Maya脚本界面
凌雪 2018-07-30 来源 :网络 阅读 3312 评论 0

摘要:本文将带你了解Maya教程之使用Qt设计师开发设计Maya脚本界面,希望本文对大家学Maya有所帮助

本文将带你了解Maya教程之使用Qt设计师开发设计Maya脚本界面,希望本文对大家学Maya有所帮助


Maya自从2011版本开始,使用了全新的Qt界面框架,由此给整个Maya的外观带来的翻天覆地的变化,更加灵活,更加美观。
   
    不仅如此,由于采用的Qt框架,使得我们可以使用Qt设计师(Qt designer),一个所见即所得的强大界面设计工具。使用Qt设计师,你再也不用一行一行地写Mel或Maya Python代码来堆砌界面了,只需用鼠标点几下按钮,就可以快速生成一个界面。
   
    下面,我们来试试用Qt设计师来设计一个能够创建各种类型几何体的Maya脚本程序界面。
   
    打开Qt设计师,创建一个新空对话框
   
   
   
     
   
    从左边的部件栏中选择两个label,一个linu Edit,一个combo box部件,一个check Box拖放到对话框,并安排好大致的位置,摆放位置时不用太精确,一会儿我们会用布局工具来安排它们的位置。然后在再拖放两个按钮push button到对话框的底部,如下图。
   
   
    点击对话框的标题栏,选择窗口部件,在Qt设计师的右侧部件属性栏,找到窗口的windowTitle属性,将dialog1改为”创建各种几何体”。
   
    用同样的方法,修改label、checkBox、pushButton部件的text属性,如下图:
   
   
    选择line Edit部件,在属性编辑栏里,将部件的objectName属性改为geometryName。这是部件的名字,每个部件在创建时都会用一个默认的唯一名字。改名字这个步骤可以不用做,但是为了在编写脚本代码时能更明确的知道你在使用哪个部件,最好给部件取一个唯一的有意义的名字,而不是默认的lineEdit1,lineEdit2这样的名字。
   
   
    用同样的方法,分别给对话框窗体、combobox,checkBox,两个pushButton命名为:
   
    createGeoDialog
   
    typeComboBox
   
    historyCheckBox
   
    okButton
   
    cancelButton  
   
    我们完成了窗体界面设计,保存界面,文件名保存为createGeometry.ui。
   
    下面开始编程。选择okButton,在属性编辑器栏,点击“添加动态属性”按钮,弹出菜单选择“字符串”。
   
   
    一、属性名称框内填写“-command”,这是Mel命令button的一个参数标记,这个参数用来指定点击按钮时要执行的操作命令,因为这个按钮是用Qt生成的,所以,我们要把Mel button命令的参数标记定义为Qt button的一个动态属性。
   
   
    在okButton的属性编辑器栏,在新加的动态属性-command的数值栏里,我们填上“createGeo()”,这是按钮被点击时要执行的过程名,这个过程目前还不存在,我们一会儿会完成它。
   
   
    用同样的方式给cancelButton加上动态属性-command,属性值为:”deleteUI createGeoDialog”,这是Mel命令,它的作用是删除当前对话框。
   
    现在编辑typeComboBox部件,双击这个部件,弹出“编辑组合框”,点击加号按钮,依次增加6个新项目,命名为“立方体”,“球体”,“圆柱体”,“圆锥体”,“圆环体”,“弹簧”。
   
    至此,所有的Qt界面设计工作都完成了,保存界面文件,退出Qt设计师。
   
    现在回到Maya,打开脚本编辑器窗口,用loadUI命令来调用ui文件,如下:
   
    string$dialog =`loadUI -uiFile "{储存ui文件的目录}/createGeometry.ui"`;
   
    showWindow $dialog;
   
   
   
    运行命令,显示出窗体,Qt comboBox按钮会被当做optionMenu,你可以选择各个选项。Qt的lineEdit部件会被当做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命令参数标记同名的动态属性并设置属性值,剩下的一切就交给Qt及loadUI命令就可以了。
   
    Qt设计师虽然很强大,但是和Maya一起使用时还是有限制的,你只能用它创建Maya本身才用的界面部件,不能使用Mel命令不能实现的部件,比如像spinBox,timeEdit等部件是不能在Maya中使用的,这是让人感到遗憾的地方。
   
    尽管如此,Qt设计师所见即所得的界面设计与编辑能力,还是大大方便和简化了我们的界面编程工作。
   
    如果想在Maya中使用Qt的所有界面部件,就只能给Maya安装PyQt模块,这样就可以用python脚本来任意编写Qt界面了,安装PyQt的方法可以参看我的博文《maya2013安装pyqt4的方法》
   
   
     
   
     
   
     
   
     
   
         

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Maya频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved