Qt常用类及类方法简介之一 QMainWindow类

原文: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=3966620&uid=27666459

 

今天为大家简单介绍一下QMainWindow类及常用的类方法。QMainWindow类提供了主程序窗口。主窗口提供了建立应用程序用户界面的框架。Qt为主窗口管理器提供了QMainWindow以及与它相关的类。QMainWindow类拥有允许添加多个QToolBar、多个QDockWidget、一个QMenuBar以及一个QStatusBar对象的布局。此布局拥有一个允许任何一种部件占据的中心领域。如下图:


      通过上面的阐述和上图的展示,相信大家已经对QMainWindow类有了一个大概的了解了。那么我们来看一下经常用到类函数的使用方法。

1、void QMainWindow::setCentralWidget ( QWidget * widget );
      此方法作用为设置传入部件为主窗口布局的中心领域部件。传入部件可为任意的部件或QWidget类的子类部件。对于“部件”这个词的理解可以理解为某机器上的一个螺丝、一个配件等等,其实部件就是螺丝和某配件的一个抽象感念嘛,他们都叫做部件,但是却有着不同的作用和形状。以后会遇到很多类继承QWidget类的。相信大家都比笔者聪明,或许我是在说些废话,呵呵。
      举例:
           在自定义的继承于QMainWindow的来构造函数里面:
             QTableWidget *table = new QTableWidget;     //QTableWidget继承于QWidget类;
            setCentralWidget(table);

2、void  QMainWindow::setWindowIcon ( const QIcon & icon );
      设置窗口左上角图标,支持PNG、BMP、GIF、FPEG、PNM、XBM、XPM格式文件。
      一下为几种GUI应用程序提供资源的方法:
            ①将图片存入文件,在程序运行时加载
            ②将XPM文件包含在源程序中,因为XPM文件是有效的C++文件
            ③使用Qt的资源机制————此种方式不仅仅支持图片格式文件,而且支持任何格式的文件

3、QMenuBar *QMainWindow::menuBar() const;
      此方法返回一个主窗口的菜单栏对象指针。如果在调用此方法时,主窗口不存在菜单栏,则此方法会创建一个空的菜单栏。在Mac应用程序中,如想在多个主窗口之间共享一个菜单栏,则需要使用QMenuBar *menuBar = new QMenuBar(0);形式创建菜单栏,即创建一个无父部件的菜单栏对象。
      这里解释一下什么叫做父部件,初学一定对这个概念不理解,这里的父部件不是C++中类的继承关系,而是部件与部件的关系。我也是学习了一段时间才慢慢悟出这里面的道理的。我看的是《C++ GUI Programming with Qt 4》英文原版,本来理解起来就有些障碍,再遇到这样新的概念词汇,更是不知其所云。为什么看英文原版书呢,个人觉得国内翻译的不是很到位,可能在某个地方或关键点给我造成误导,貌似扯远了。。。即说说父部件是个什么东西,现在为大家打个比方,一张电脑桌由多个部件构成,如桌面,桌子腿,抽屉等等,抽屉上面有抽屉把手,那么抽屉就是抽屉把手的父部件,电脑桌就是抽屉的父部件。相信这样解释,大家一定就会理解了。

4、QToolBar * QMainWindow::addToolBar ( const QString & title );
      此函数为重载函数,其余两个为已创建了工具栏(QToolBar)对象时,将工具栏对象添加到QMainWindow对象中。下面就会马上列出这两个类方法。在调用此方法时,会创建一个QToolBar对象,返回这个对象的指针,并在主窗口顶部工具栏区域中显示。

5、void QMainWindow::addToolBar ( Qt::ToolBarArea area, QToolBar * toolbar );
      与上个函数构成重载关系,此函数第二个形参为已定义好的工具栏对象指针,第一个形参工具栏表示的位置,此形参为枚举型变量。
      工具栏表示位置共4种,即左右上下:
        (1) Qt::LeftToolBarArea      0x1
        (2) Qt::RightToolBarArea     0x2
        (3) Qt::TopToolBarArea       0x4
        (4) Qt::BottomToolBarArea  0x8

6、void QMainWindow::addToolBar ( QToolBar * toolbar );
      与调用 addToolBar(Qt::TopToolBarArea, toolbar) 方法效果相同,即调用 addToolBar(Qt::TopToolBarArea, toolbar) 方法,工具栏显示区域默认为主窗口顶部。

2013年10月30号   晚上有事情,没来更新。。。

7、QStatusBar *QMainWindow::statusBar() const;
      当主窗口状态栏不存在时,创建状态栏,并返回状态栏对象指针。一般在自定义QMainWindow子类的构造函数时使用,创建状态栏对象。创建后,添加QLabel对象,以显示主窗口状态或菜单栏中按钮的状态提示。

相信通过3、4、5、6、7、QMainWindow类方法的学习,大家应该掌握了创建菜单栏,工具栏和状态栏的方法。通常的主窗口一般也就需要这些东西了。但要想让菜单栏,工具栏以及状态栏能有自己的动作或行为,还需要其他类的配合使用。大家不用急,QMainWindow类简单介绍完毕之后,会介绍这些相关的类及其使用方法。

8、void QMainWindow::setWindowModified(bool);
      当此函数形式参数为true时,即设置了WindowModified属性为true,意思为表明先编辑的文档有更新,这时,Qt会自动更新标题栏,Mac OS X 系统上在主窗口的关闭按钮上将出现一个变更的样式,其他系统或平台上会在主窗口标题栏的文件名后多显示一个“*”。

posted @ 2014-03-24 21:28  &、van  阅读(1400)  评论(0编辑  收藏  举报