新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > Qt图形编程基础之:Qt/Embedded开发入门

Qt图形编程基础之:Qt/Embedded开发入门

作者:时间:2013-09-13来源:网络收藏

本文引用地址:http://www.eepw.com.cn/article/257103.htm

12.2.5图形界面编程

Qt提供了所有可能的类和函数来创建GUI程序。Qt既可用来创建“主窗口”式的程序,即一个有菜单栏,工具栏和状态栏作为环绕的中心区域;也可以用来创建“对话框”式的程序,使用按钮和必要的选项卡来呈现选项与信息。Qt支持SDI(单文档界面)和MDI(多文档界面)。Qt还支持拖动、放下和剪贴板。工具栏可以在工具栏区域内移动,拖拽到其他区域或者作为工具托盘浮动起来。这个功能是内建的,不需要额外的代码,但程序员在需要时可以约束工具栏的行为。

使用Qt可以大大简化编程。例如,如果一个菜单项、一个工具栏按钮和一个快捷键都完成同样的动作,那么这个动作只需要一份代码。

Qt还提供消息框和一系列标准对话框,使得程序向用户提问和让用户选择文件、文件夹、字体以及颜色变得更加简单。为了呈现一个消息框或一个标准对话框,只需要用一个使用方便的Qt静态函数的一行的语句。

1.主窗口类

QMainWindow类提供了一个典型应用程序的主窗口框架。

一个主窗口包含了一组标准窗体的集合。主窗口的顶部包含一个菜单栏,它的下方放置着一个工具栏,工具栏可以移动到其他的停靠区域。主窗口允许停靠的位置有顶部、左边、右边和底部。工具栏可以被拖放到一个停靠的位置,从而形成一个浮动的工具面板。主窗口的下方,也就是在底部的停靠位置下方有一个状态栏。主窗口的中间区域可以包含其他的窗体。提示工具和“这是什么”帮助按钮以旁述的方式阐述了用户接口的使用方法。

对于小屏幕的设备,使用Qt图形设计器定义的标准的QWidget模板比使用主窗口类更好一些。典型的模板包含有菜单栏、工具栏,可能没有状态栏(在必要的情况下,可以用任务栏,标题栏来显示状态)。

例如,一个文本编辑器可以把QTextEdit作为中心部件:

QTextEdit*editor=newQTextEdit(mainWindow);

mainWindow->setCentralWidget(editor);

2.菜单类

弹出式菜单QPopupMenu类以垂直列表的方式显示菜单项,它可以是单个的(例如上下文相关菜单),可以以菜单栏的方式出现,或者是别的弹出式菜单的子菜单出现。

每个菜单项可以有一个图标、一个复选框和一个加速器(快捷键),菜单项通常对应一个动作(例如存盘),分隔器通常显示成一条竖线,它用于把一组相关联的动作菜单分离成组。

下面是一个建立包含有New、Open和Exit菜单项的文件菜单的例子。

QPopupMenu*fileMenu=newQPopupMenu(this);

fileMenu->insertItem(New,this,SLOT(newFile()),CTRL+Key_N);

fileMenu->insertItem(Open...,this,SLOT(open()),CTRL+Key_O);

fileMenu->insertSeparator();

fileMenu->insertItem(Exit,qApp,SLOT(quit()),CTRL+Key_Q);

当一个菜单项被选中,和它相关的将被执行。加速器(快捷键)很少在一个没有键盘输入的设备上使用,的典型配置并未包含对加速器的支持。上面出现的代码“New”意思是在桌面机器上以“New”的方式显示出来,但是在嵌入式设备中,它只会显示为“New”。

QMenuBar类实现了一个菜单栏,它会自动地设置几何尺寸并在它的父窗体的顶部显示出来,如果父窗体的宽度不够宽以至不能显示一个完整的菜单栏,那么菜单栏将会分为多行显示出来。Qt内置的布局管理能够自动调整菜单栏。

Qt的菜单系统是非常灵活的,菜单项可以被动态使能、失效、添加或者删除。通过子类化QCustomMenuItem,用户可以建立客户化外观和功能的菜单项。

3.工具栏

工具栏可以被移动到中心区域的顶部、底部、左边或右边。任何工具栏都可以拖拽到工具栏区域的外边,作为独立的浮动工具托盘。

QToolButton类实现了具有一个图标,一个3D框架和一个可选标签的工具栏。切换型工具栏按钮具有可以打开或关闭某些特征的功能。其他的则会执行一个命令。可以为活动、关闭、开启等模式,打开或关闭等状态提供不同的图标。如果只提供一个图标,Qt能根据可视化线索自动地辨别状态,例如将禁用的按钮变灰,工具栏按钮也能触发弹出式菜单。

QToolButton通常在QToolBar内并排出现。一个程序可含有任意数量的工具栏并且用户可以自由地移动它们。工具栏可以包括几乎所有部件,例如QComboBox和QSpinBox。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

linux相关文章:linux教程




评论


相关推荐

技术专区

关闭