qt坐标系统

qt坐标系统比較简单

button.setGeometry(20,20,100,100);

上面的代码把button显示为父窗体的20,20处宽度为100,高度为100

接下去是布局

qt里面布局须要增加<QLayout.h>这个头文件。

qt里面垂直布局

qt里面的垂直布局须要导入<QVBoxLayout.h>这个头文件。

qt里面的水平布局须要导入<QHBoxLayout.h>这个头文件。

以下是是一段布局的代码

QHBoxLayout layout;

layout.addStretch(1);

layout.addWidget(&button,1);

layout.addSpacing(50);

layout.addWidget(&edit,1);

layout.addStretch(1);

当中我们首先创建了一个QHBoxLayout这个类。

然后我们像左边增加一个比重为1的弹簧。右边增加一个比重为一的弹簧。中间用50个像素点隔开。

弹簧的目的就是为了固定(stretch设置为0的元素是固定的,而stretch设置为1的元素是能够自由拖拉的),所以增加了弹簧后,左边的和右边都是能够被拖动的。而中间的button和空格是固定不动的。

以下是详细的显示效果

接下去我们介绍栅格布局

qt里面用栅格布局我们得用<QGridLayout.h>这个头文件下的QGridLayout这个类。

以下是一段代码

QGridLayout layout;

layout.addWidget(&button,0,0);

layout.addWidget(&edit,0,1);

layout.addWidget(new QPushButton("a"),1,0);

layout.addWidget(new QPushButton("b"),1,1);

layout.addWidget(new QPushButton("c"),2,0,1,2);

layout.setRowStretch(3,1);

layout.setColumnStretch(2,1);

在这里我们在布局里面增加了5个窗体。

4个button,1个输入框。

最右边是一个列弹簧。最以下是一个行弹簧。

voidaddWidget(QWidget*,introw,intcolumn,introwSpan,intcolumnSpan,Qt::Alignment=0);

这是QGridLayout里面addWidgets这个控件的函数首部,我们它能够设置窗体所在的行列还能够设置窗体的跨度。

以下是显示效果

总的一个代码

#include <QApplication>
#include <QWidget>
#include <QPushButton>
#include <QLayout>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QGridLayout> int main(int argc,char* argv[])
{
QApplication app(argc,argv);
QWidget w;
QPushButton button;
button.setText("button");
// button.setParent(&w);
QLineEdit edit;
// edit.setParent(&w);
// QVBoxLayout layout;
#if 0
QHBoxLayout layout;
layout.addStretch(1);
layout.addWidget(&button,1);
layout.addSpacing(50);
layout.addWidget(&edit,1);
layout.addStretch(1);
#endif #if 1
QGridLayout layout;
layout.addWidget(&button,0,0);
layout.addWidget(&edit,0,1);
layout.addWidget(new QPushButton("a"),1,0);
layout.addWidget(new QPushButton("b"),1,1);
layout.addWidget(new QPushButton("c"),2,0,1,2);
layout.setRowStretch(3,1);
layout.setColumnStretch(2,1);
#endif
QObject::connect(&button,SIGNAL(clicked(bool)),&w,SLOT(close()));
w.setWindowTitle("hello world");
w.setLayout(&layout);
w.show();
return app.exec();
}

当中我们用#if 0 .....#endif的预编译的方式来凝视代码。



最新文章

  1. iOS开发之多种Cell高度自适应实现方案的UI流畅度分析
  2. ASP.NET Boilerplate 深入系列之:概述
  3. Redis内存存储结构分析
  4. 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
  5. Hibernate不同数据库 方言|驱动|url 配置
  6. Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法
  7. VBS get,post函数
  8. 工厂模式在JS中的实践
  9. java多线程系列(一)
  10. Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
  11. python_19_异常处理
  12. requests-证书验证
  13. MT【305】丹德林双球
  14. 转发:entos7修改文件夹权限和用户名用户组
  15. Spring Boot 之属性读写详解
  16. 博主自传——蒟蒻的OI之路
  17. bubbo调用Failed to invoke remote method异常解决
  18. 第五次作业 hql查询
  19. bitmap过大无法显示图片的问题 - z
  20. Spring中的类型转换与数据绑定(PropertyEditor、ConversionService、Data Binding、Formatter)

热门文章

  1. 用ImageSwitcher实现显示图片(更改图片时有动画效果)
  2. Orchard模块开发全接触8:改造后台
  3. Git项目的初始化
  4. DPI (Deep Packet Inspection) 深度包检测技术
  5. Inferred type &#39;S&#39; for type parameter &#39;S&#39; is not within its bound; should extend
  6. C++虚函数之接口 最简单的功能
  7. asp.net获取当前网址url【转】
  8. DevExpress的安装方法与破解教程【转】
  9. iOS开发-UIActionSheet简单介绍
  10. Spring(九):Spring配置Bean(二)自动装配的模式、Bean之间的关系