欢迎来到天天文库
浏览记录
ID:46127850
大小:116.64 KB
页数:8页
时间:2019-11-21
《浅谈Qt中的布局管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、浅谈Qt中的布局管理摘要:Qt布局管理的目标是将放置于窗体屮的每一个部件都给定一个合适的位置和大小,常用的有QHBoxLayout水平布局管理器、QVBoxLayout垂直布局管理器、QgridLayout网格布局管理器。Qt程序员在完成窗体界面设计时,可通过可视化的方法搭建界面并布局;也可以纯粹手工编写C++源代码来实现界面设计,编码的方式更适合较复杂的布局。关键词:Qt布局管理;水平布局;垂直布局;网格布局;可视化方式;编码方式中图分类号:TP311文献标识码:A文章编号:1009-3044(2014)25-5883-0
2、4Qt是一个跨平台的C++图形用户界面库,1991年由奇趣科技开发。2008年,奇趣科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具,2012年8月Digia宣布对Qt业务及其技术全面收购。Qt技术的传统优势都在桌面和嵌入式系统,目前Digia将移动互联网平台定位为其主要的发展方向,很快将迎来Qt的移动时代。Qt布局管理是设计应用程序窗体界面时必须考虑的问题,它的目标是将放置于窗体中的每一个部件都给定一个合适的位置和大小,即使窗口尺寸大小被改变了,仍能就保证窗体上的部件始终摆放得美观合适。Qt程序员有两种途径來完
3、成窗体界面的设计和布局:第一种通过可视化的方法搭建界面,由菜单或工具栏中的布局管理器实现布局,可视化的方式比手工编码更简洁快速;第二种方式纯粹手工编写C++源代码来实现界面设计,这种方式更适合较复杂的布局。Qt提供了多个用于窗口布局的类,编写界面代码时可根据需求定义相应的布局类对象。常用的有:QHBoxLayout>QVBoxLayout>QGridLayout三种,分别是水平布局管理器、垂直布局管理器、网格布局管理器。使用Qt布局管理器可以确保窗体能够自动适应于不同的字体、语言和系统平台。1水平布局管理器和垂直布局管理器Q
4、HBoxLayout,水平布局管理器,把窗口部件按照从左到右的顺序排列布局;QVBoxLayout,垂直布局管理器,把窗口部件按照从上到下的顺序排列布局。比如应用程序需要创建一个登录窗口,我们來看看界面设计方法。1.1可视化的方式首先从窗口部件工具箱中拖拽控件图标将其放到窗体中的大概位置,空白处可放入水平分隔符,这时分隔符会显示为一个蓝色的弹簧,但在最终结果的窗体中它是不可见的。然后按照功能需求在属性编辑器中修改每一个窗口部件的属性。此时的界面效果如图1所示。这时在窗体上出现的红线是已创建的布局,但在窗体运行时,它们是不会出
5、现的。1.2编码实现方式使用纯粹编码的方式來设计登录窗体界面,首先要在登录窗体的头文件中声明各个控件,再在其源文件的构造函数中创建,布局也在构造函数中实现。代码如下:loginDlg::loginDlg(QWidget*parent):QDialog(parent){setWindowTitle("Layout");usernameLabel=newQLabel(tr(〃用户名:〃));//创建各个控件usernameEdit=newQLineEdit();passLabel=newQLabel(tr(〃密码:〃));pas
6、sEdit二newQLineEdit();okButton=newQPushButton(tr(〃登录〃));cancleButton=newQPushButton(tr(〃取消〃));QVBoxLayout*mainLayout=newQVBoxLayout(this);//整体为垂直布局QHBoxLayout*firstLayout=newQHBoxLayout(this);//第一行的两个控件水平排列firstLayoutaddWidget(usernameLabel);firstLayout^addWidget(us
7、ernameEdit);mainLayout-^addLayout(firstLayout);QHBoxLayout*secondLayout=newQHBoxLayout(this);//第二行的两个控件水平排列secondLayout-^addWidget(passLabel);secondLayoul-*addWidget(passEdit);mainLayout-^addLayout(secondLayout);QHBoxLayout*thirdLayout=newQHBoxLayout(this);//第三行的两个
8、控件水平排列thirdLayout-^addWidget(okButton);thirdLayout^addWidget(cancleButton);mainLayout-^addLayout(thirdLayout);this-^setLayout(mainLayout);}窗体运行时效
此文档下载收益归作者所有