从零开始做3D地图编辑器(九)(基于QT与OGRE)

三、窗体、菜单栏、工具栏、状态栏

A、创建窗体

         我还是按照QT基础那节的内容创建一个窗体类,不同的是这个窗体类现在继承于QMainWindow它会使得封装中央部件、菜单条和工具条以及窗口状态变得更容易

接下去,设置标题和窗口大小:

其中WINDOW_WIDTHWINDOW_HEIGHT被定义在头文件中:

 

C++里尽量减少使用宏。

设置中央部件:

        

为什么要设置中央部件呢?因为接下去我要使用Dock Widget,如果没有中央部件,左侧,右侧,下部就没有参照,也没意义了。

         针对我们的基本框架,目前也仅仅需要这些简单的功能。

B、创建菜单栏和工具栏

QT创建菜单、工具栏前,必须先创建QAction然后把这个QAction添加给菜单或者工具栏。

QAction是什么,是用户的UI动作,在一列菜单中,比如说File下面的new 就是一个QAction,这个QAction包括包括图标,名字,快捷方式,状态栏信息等。

我通过以下方法来设置QAction:

头文件中加入:

因为工具栏和菜单都共用一个QAction,所以我把它用为类成员放在头文件中。

Cpp中加入:

         第一行是申请一个QAction,第一个参数是指定一个图标QIcon,待会我才来讨论图片的路径。第二个参数就是QAction显示的文字内容,tr()是将来用作本地化的,你只需要记得在你文本前加上tr()就行,this是父部件指针。

         第二行是设置一个快捷键,在这里使用的是QT定义的NEW快捷键,你也可以使用QKeySequence(Qt::ALT + Qt::Key_E)的方式来取得QKeySequence

         第三行就是设置状态栏要显示的文本。

         第四行是设置信号与槽,这里使用的是自定义槽,不熟悉的话回过头去看QT基础知识那节。

         依照以上方法分别设定好(New,Open,Open,Open As,Exit),我想你这时候应该用一个函数管理了这些QAction的生成,这是一种好的习惯,不要把一大堆的函数都挤在构造函数里面,原则上超过50行的函数就得考虑增加一个新函数。

         接下去把QAction添加进菜单和工具栏里面去。在QT4.6里面菜单使用的是QMenu类(以前是使用QPopupMenu,如果你看到一些教程上面写的是这个,那么你最好换一个教程),工具栏使用的是QToolBar类。

         因为当前窗体继承于QMainWidow,所以可以通过menuBar()函数来获得窗体菜单条指针(菜单条和菜单不是同一个东西,菜单条指的是那一行可以放菜单的长条,而菜单只是File那一列),把菜单添加到菜单条里面去,就可以在菜单条上看到了。

         注:菜单有两种方式,一种是添加进菜单条后变成固定菜单,另一种是弹出式菜单,两者区别不大,这个在后面会详细说明。

头文件中加入:

Cpp中加入:

第一行首先是获得菜单条的指针,然后添加一个File的新菜单,并把返回指针。

第二行是把QAction增加进菜单。

第三行是在QAction中间增加一个分隔条(横条)。

添加工具栏相对来说比添加菜单还更简单,你甚至还不用menuBar()取得菜单条,看代码:

头文件中加入:

Cpp中加入:

第一行增加一个名字叫File的工具栏,File这个文字不显示,它会生成一个特别的分隔条:两条竖杠,如果这个工具栏不是第一个工具栏的话,它可以被左右拖动。每增加一个工具栏都会产生这个分隔条。这是使用起来很简单也很有效果的东西。

第二行是把QAction增加进工具栏。

第三行是QAction中间增加一个分隔条(单行竖条)。

上面都是最基本的函数,还有两个函数经常使用。

第一个是设置显示图标大小。

第二个是设置按钮风格,现在是只显示图标,它有好几种文字和图标显示风格,可以在助手查看详细说明。

A、 状态栏

状态栏就非常简单了,工具栏与菜单栏都自动更改状态栏信息,如果你要手动更改的话,就直接加上这句话:

这是在窗体创建时状态栏显示的内容。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值