Qt入门-layout布局
| 分类: Qt |
(1)使用水平布局类QHBoxLayout;
(2)使用垂直布局类QVBoxLayout;
(3)使用网格布局类QGridLayout。
这三种方法可以嵌套使用。
控件在布局时可以先不指定父窗口,最后交由Layout统一指定。
示例:
-
#include
-
#include
-
#include
-
#include
-
#include
-
#include
-
-
-
int
main( intargc, char*argv[]) -
{
-
QApplication a(argc, argv); -
QDialog *mainWindow = new QDialog; -
-
QHBoxLayout *topLayout = new QHBoxLayout; -
QLabel *lbl = new QLabel(QWidget::tr( "&Input:"),mainWindow); -
QLineEdit *lineEdt = new QLineEdit(mainWindow); -
lbl->setBuddy(lineEdt); -
topLayout->addWidget(lbl); -
topLayout->addWidget(lineEdt); -
-
QHBoxLayout *bomLayout = new QHBoxLayout; -
QPushButton *btn_ok = new QPushButton(QWidget::tr( "OK"),mainWindow);\ -
btn_ok->setDefault(true); -
QPushButton *btn_cancel = new QPushButton(QWidget::tr( "Cancel"),mainWindow); -
bomLayout->addStretch(); -
bomLayout->addWidget(btn_ok); -
bomLayout->addStretch(); -
bomLayout->addWidget(btn_cancel); -
bomLayout->addStretch(); -
-
QVBoxLayout *mainLayout = new QVBoxLayout; -
mainLayout->addLayout(topLayout); -
mainLayout->addLayout(bomLayout); -
-
mainWindow->setLayout(mainLayout); -
-
mainWindow->resize(300, 100); -
mainWindow->setWindowTitle(QWidget::tr("Qt Test" )); -
mainWindow->show(); -
-
return a.exec(); -
}
编译运行,界面如下:
http://my.csdn.net/uploads/201207/19/1342694702_4094.JPG
在界面中,最外部是mainLayout,它的类型是垂直布局类QVBoxLayout。它包含了两个水平布局类QHBoxLayout,分别是topLayout和bomLayout。
比起QHBoxLayout和HVBoxLayout, QGridLayout运用更加灵活。
QGridLayout的常用方法
(1)addWidget:
-
//放置一个控件到一个单元格
-
void
intaddWidget ( QWidget * widget, row, intcolumn, Qt::Alignment alignment = 0 ) -
//如果放置的控件超出一个单元格,则使用该方法
-
void
intaddWidget ( QWidget * widget, fromRow, intfromColumn, introwSpan, intcolumnSpan, Qt::Alignment alignment = 0 )
(2)addLayout
-
void
intaddLayout ( QLayout * layout, row, intcolumn, Qt::Alignment alignment = 0 ) -
void
intaddLayout ( QLayout * layout, row, intcolumn, introwSpan, intcolumnSpan, Qt::Alignment alignment = 0 )
参数与addWidget类似。
(3)setSpacing
-
void
QGridLayout::setSpacing int( spacing )
设置控件水平和垂直之间的间隔。
示例:
-
#include
-
#include
-
#include
-
#include
-
#include
-
#include
-
#include
-
-
-
int
main( intargc, char*argv[]) -
{
-
QApplication a(argc, argv); -
QDialog *mainWindow = new QDialog; -
-
QGridLayout *gridLayout = new QGridLayout; -
gridLayout->setColumnStretch(0, 1); -
gridLayout->setColumnStretch(1, 4); -
gridLayout->setColumnStretch(2, 1); -
gridLayout->setColumnStretch(3, 1); -
gridLayout->setColumnStretch(4, 4); -
-
gridLayout->setMargin(15); -
gridLayout->setColumnMinimumWidth(2, 15); -
-
-
QLabel *lbl1 = new QLabel(QWidget::tr( "FirstName:" )); -
QLineEdit *edit1 = new QLineEdit; -
QLabel *lbl2 = new QLabel(QWidget::tr( "LastName:" )); -
QLineEdit *edit2 = new QLineEdit; -
QLabel *lbl3 = new QLabel(QWidget::tr( "Sex:")); -
QLineEdit *edit3 = new QLineEdit; -
QLabel *lbl4 = new QLabel(QWidget::tr( "Birthday:")); -
QLineEdit *edit4 = new QLineEdit; -
QLabel *lbl5 = new QLabel(QWidget::tr( "Address:")); -
QTextEdit *textEdt = new QTextEdit; -
-
-
-
gridLayout->addWidget(lbl1, 0, 0); -
gridLayout->addWidget(edit1, 0, 1); -
gridLayout->addWidget(lbl2, 0, 3); -
gridLayout->addWidget(edit2, 0, 4); -
gridLayout->addWidget(lbl3, 1, 0); -
gridLayout->addWidget(edit3, 1, 1); -
gridLayout->addWidget(lbl4, 1, 3); -
gridLayout->addWidget(edit4, 1, 4); -
gridLayout->addWidget(lbl5, 2, 0); -
gridLayout->addWidget(textEdt, 3, 0, 2, 5); -
-
mainWindow->setLayout(gridLayout); -
-
mainWindow->resize(400, 150); -
mainWindow->setWindowTitle(QWidget::tr("Qt Test" )); -
mainWindow->show(); -
-
return a.exec(); -
}
编译运行,界面如图:
http://my.csdn.net/uploads/201207/20/1342750860_9941.JPG
版权声明:本文为博主原创文章,未经博主允许不得转载。

加载中…