#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
QWidget w;
w.setWindowTitle("Hello Wrold");
QLineEdit edit;
QPushButton button;
button.setText("某某");
// button.show();
#if 0
layout.setColumnStretch(0,1);
layout.setRowStretch(0,1);
layout.setColumnStretch(3,1);
layout.setRowStretch(4,1);
layout.addWidget(&edit,1,1);
layout.addWidget(&button,1,2);
layout.addWidget(new QLineEdit("2,1"),2,1);
layout.addWidget(new QPushButton("2,2"),2,2);
//增加一个与与上面一样长的button
layout.addWidget(new QPushButton("3,1"),3,1,1,2);
#endif
QGridLayout layout;
QLineEdit *password;
layout.setColumnStretch(0,1);//为了使显示在最中间需要设置弹簧
layout.setRowStretch(0,1);
layout.setColumnStretch(3,1);
layout.setRowStretch(4,1);
layout.addWidget(new QLabel("Username"),1,1);
layout.addWidget(new QLineEdit(),1,2);
layout.addWidget(new QLabel("Password"),2,1);
layout.addWidget(password=new QLineEdit(),2,2);
//layout.addWidget(new QPushButton("登录"),3,2);//这样显示的不好看 想在右边一点
QHBoxLayout* hbox;
layout.addLayout(hbox=new QHBoxLayout,3,2);//添加一个layout在这里 layout嵌套使用
hbox->addStretch(1);
hbox->addWidget(new QPushButton("登录"));
password->setEchoMode(QLineEdit::Password);
w.show();
w.setLayout(&layout);
return app.exec();
}
开发一个图形界面应用程序,界面的布局影响到界面的美观。在设计一个界面之前,应该考虑到开发的界面可能给不用的用户使用,而用户的屏幕大小、纵横比例、分辨率可能不同,界面还可能是可缩放的,程序应该可以适应这些变化。试想如果控件很多,布局这些控件需要编写大量的代码。幸运的是,QT提供了更好的方法布局控件。
常用的三种布局方法:
(1)使用水平布局类QHBoxLayout;
(2)使用垂直布局类QVBoxLayout;
(3)使用网格布局类QGridLayout。
这里嵌套使用了后面两种。
QGridLayout的常用方法
(1)addWidget:
1)row:指放置控件的网格行号(行号从0开始);
2)colum:指放置控件的网格列号(从0开始);
3)alignment:对齐方式。
4)fromRow:指放置控件的起始网格行号;
5)fromColumn:指放置控件的起始网格列号;
6)rowSpan:指放置控件占多少行;
7)columnSpan:指放置控件占多少列。
(2)addLayout
参数与addWidget类似。
(3)setSpacing