您的位置:首页 > 编程语言 > Qt开发

关于Qt-QGridLayout布局的简单使用

2012-03-16 09:04 441 查看

分类:
QT 2010-12-04 17:59
1791人阅读
评论(0)
收藏
举报

注:此文是从我的QQ空间里移出来的,因为觉的用那么多空间,blog了太累了,它发表于 2010年01月07日 09:35



--------------------------------------------------------------------------------------------------------------------------------------------------------



本文转自:我朋友的QQ空间,如需要转载,请注明本地址


呃……在界面设计时一直困扰我的GridLayout布局今天算是搞定了.实际机上操作方式还是很简单.只是之前没有静下心来好好的使用.好了废话少说,进入正题吧。

  关于网格布局的定义我就不在赘述了,对于编程的人来说那是侮辱智商的事情,接下来举一个简单的例子说明一下QGridLayout 的使用方式吧.

  本次的用力描述是为一个QMainWindow窗口添加网格布局的两个并行的编辑框.即QLineEdit.

  1.为MainWindow添加自定义布局:

  首先需要注意的是,由于MainWindow自身就有布局,所以尽量不要直接添加自定义的布局界面,具体的方式为使用MainWindow自身封装的setCentralWidget(QWidget* widget)方法添加一个widget(一般使用QGroupBox就比较合适).然后在该widget里在添加布局setLayout.

  2.为QGridLayout添加Widgets.

  在QGridLayout添加widget方法--addWidget(QWidget , int , int , int , int)总,第一个int变量是widget的起始行数即(row),下一个是起始列数(即column),下一个是为所跨的行数,最后一个是所跨的列数.需要注意的是,在widget的起始行数不为0时,所跨行数最小不可以为0,最少必须是widget所在的行数.列数同样如此.否则控制台将报错,实际上的界面也运行不起来(直接就挂了).例如现在添加一个QLineEdit的起始行列数为(1 ,
1),则所跨行数/列数不可再为(0 , 0),最小为(1 , 1).知道了这一点,接下来添加自己需要的效果的Widget就比较容易了.

  以添加两个个QLineEdit为例:

  我定义了三个QLineEidt的长度分别是6 , 3 .(这里的长度不是实际值,程序员都明白,添加到布局后布局会管理这些琐碎的东西的).而且都在起始行添加(即0行)

  具体的执行语句就是:

  QGroupBox* gBox = new QGroupBox;

this->setCentralWidget(gBox);

QGridLayout* layout = new QGridLayout(this);

layout->addWidget(new QLineEdit() , 0 , 0 , 0 , 5);

layout->addWidget(new QLineEdit() , 0 , 6 , 0 , 2);

this->resize(1000 , 600);

gBox->setLayout(layout);

  这样,一个长度为6和长度为3的两个QLineEidt就会正常的显示出来了.

注意:大家可能也注意到了,这段可执行代码里可能this->resize(1000 , 600);是比较多余的.我承认,这个窗口大小的确设置的大了些.但如果不设置采用默认大小的话会出现显示的两个QLineEidt是等大小的.这个原因是qt的该布局自身设置了各自的相对最小显示.当窗口初始化的大小没有达到布局可以呈现的效果的时候,网格布局会对其做出自身的处理.这也是我在使用QGridLayout初期是遇到的比较恶心的一个现象了.不过如果没有对窗口做Size的上下限限制,调整窗口大小,依然会出现之前设置的效果.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: