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

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

hot3.png

关于布局,布局可以采用绝对定位和布局定位,绝对定位就是直接给出坐标值,但是如果用户改变了窗口大小,比如最大化,如果你自己不做处理,那么窗口上面的这些控件还是在原来位置,并不能随着窗口变化而变化。

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://my.oschina.net/u/1458864/blog/405281

你可能感兴趣的文章
Firebug 的脚本页面不能用
查看>>
clone远程代码及push
查看>>
201621123075作业09-集合与泛型
查看>>
区块链简介(摘自区块链开发实战书籍)
查看>>
js导出excel
查看>>
HDU 1796 How many integers can you find 容斥原理
查看>>
highcharts API 中文
查看>>
第一章计算机网络概述
查看>>
perl模块 Compress::Raw::Lzma 的安装
查看>>
关于计算文字显示占用画面大小(System.Drawing.Graphics.MeasureString)
查看>>
可重入函数与不可重入函数
查看>>
[转] 深入剖析 linux GCC 4.4 的 STL string
查看>>
常用Web Service汇总(天气预报、时刻表等)
查看>>
resin app server安装总结
查看>>
抓取新浪新闻列表实例
查看>>
[04-06]鼠标悬停图片时,实现抖动效果
查看>>
抽象类和接口的区别
查看>>
react 自定义 TabBar 组件
查看>>
Palindrome Pairs
查看>>
项目测试随笔
查看>>