博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT布局
阅读量:5115 次
发布时间:2019-06-13

本文共 2613 字,大约阅读时间需要 8 分钟。

关于布局,布局可以采用绝对定位和布局定位,绝对定位就是直接给出坐标值,但是如果用户改变了窗口大小,比如最大化,如果你自己不做处理,那么窗口上面的这些控件还是在原来位置,并不能随着窗口变化而变化。
QT提供了布局管理器,可以避免这种问题出现,常用的有水平布局,垂直布局,网格布局

在布局管理器中使用addWidget添加一个控件,使用addLayout添加一个子布局

1.水平布局

#include <QApplication>
#include <QPushButton>
#include <QHBoxLayout>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addWidget(button4);
    layout->addWidget(button5);
    window->setLayout(layout);
    window->show();
    return app.exec();

}

2.垂直布局
#include <QApplication>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(button1);
    layout->addWidget(button2);
    layout->addWidget(button3);
    layout->addWidget(button4);
    layout->addWidget(button5);
    window->setLayout(layout);
    window->show();
    return app.exec();

}

3.网格布局
QGridLayout
#include <QApplication>
#include <QPushButton>
#include <QGridLayout>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QWidget *window = new QWidget;
    QPushButton *button1 = new QPushButton("One");
    QPushButton *button2 = new QPushButton("Two");
    QPushButton *button3 = new QPushButton("Three");
    QPushButton *button4 = new QPushButton("Four");
    QPushButton *button5 = new QPushButton("Five");
    QPushButton *button6 = new QPushButton("Six");
    QGridLayout *layout = new QGridLayout;
    layout->addWidget(button1, 0 ,0);
    layout->addWidget(button2, 0, 1);
    layout->addWidget(button3, 1, 0);
    layout->addWidget(button4, 1, 1);
    layout->addWidget(button5, 2, 0);
    layout->addWidget(button6, 2, 1);
    window->setLayout(layout);
    window->show();
    return app.exec();

}

QGridLayout的addWidget有两种重载方法
void addWidget(QWidget *widget, int row, int column)
row和colume用于指定它的行和列
void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan)
fromRow和fromColumn开始行和列,rowSpan和columeSpan用于指定它占了多行和占了多少列。

转载于:https://www.cnblogs.com/phonegap/archive/2011/11/21/2536150.html

你可能感兴趣的文章
js转义html,反转义
查看>>
Educational Codeforces Round 39 A Partition
查看>>
上传文件
查看>>
原来数据库里的单引号是这么加进去的
查看>>
html5新特性:异步上传文件
查看>>
12.2日常
查看>>
12.3日常
查看>>
MAVEN项目的搭建
查看>>
EL表达式取整问题
查看>>
使用过滤器实现网站访问计数器的功能
查看>>
Lumia 800 7.10.8783.12
查看>>
面向对象的四大特征 封装 继承 多态 抽象
查看>>
XML的概述,.Dom4解析和SAX解析
查看>>
codefroces204A - Little Elephant and Interval 数位DP
查看>>
UVA 10870 Recurrences 矩阵快速幂
查看>>
追求心灵的宁静
查看>>
Educational Codeforces Round 25 G. Tree Queries
查看>>
LintCode-73.前序遍历和中序遍历树构造二叉树
查看>>
JS-面向对象-继承
查看>>
JavaScript(3)——Object-Oriented Design
查看>>