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的预编译的方式来凝视代码。