QGridLayout

阅读数:28 评论数:0

跳转到新版页面

分类

C/C++

正文

一、概述

QGridLayout 是 Qt 提供的一种布局管理器,用于将窗口部件按网格方式排列。它可以让你将窗口部件放置在网格的特定行和列中,方便地管理复杂的界面布局。

二、基本用法

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("QGridLayout Example");

    QGridLayout *layout = new QGridLayout;

    // 创建按钮并添加到布局中
    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");
    QPushButton *button4 = new QPushButton("Button 4");

    layout->addWidget(button1, 0, 0); // 在第0行,第0列
    layout->addWidget(button2, 0, 1); // 在第0行,第1列
    layout->addWidget(button3, 1, 0); // 在第1行,第0列
    layout->addWidget(button4, 1, 1); // 在第1行,第1列

    window.setLayout(layout);
    window.show();

    return app.exec();
}

三、其它用法

1、跨行跨列

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget window;
    window.setWindowTitle("QGridLayout Advanced Example");

    QGridLayout *layout = new QGridLayout;

    QPushButton *button1 = new QPushButton("Button 1");
    QPushButton *button2 = new QPushButton("Button 2");
    QPushButton *button3 = new QPushButton("Button 3");
    QPushButton *button4 = new QPushButton("Button 4");

    layout->addWidget(button1, 0, 0, 1, 2); // 在第0行,第0列,跨越1行,2列
    layout->addWidget(button2, 1, 0);       // 在第1行,第0列
    layout->addWidget(button3, 1, 1);       // 在第1行,第1列
    layout->addWidget(button4, 2, 0, 1, 2); // 在第2行,第0列,跨越1行,2列

    window.setLayout(layout);
    window.show();

    return app.exec();
}

2、设置间距

layout->setHorizontalSpacing(10); // 设置列间距为10像素
layout->setVerticalSpacing(15);   // 设置行间距为15像素

3、设置边距

layout->setContentsMargins(10, 10, 10, 10); // 左、上、右、下各10像素

4、调整行和列的伸缩性

你可以调整行和列的伸缩性,即当窗口大小变化时,哪些行或列应优先调整:

layout->setColumnStretch(0, 1); // 第0列的伸缩因子为1
layout->setColumnStretch(1, 2); // 第1列的伸缩因子为2

layout->setRowStretch(0, 1);    // 第0行的伸缩因子为1
layout->setRowStretch(1, 2);    // 第1行的伸缩因子为2

4、单元格中水平居中

#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QWidget *bottomWidget = new QWidget;
    QGridLayout *mainLayout = new QGridLayout;

    // 设置QGridLayout的间距和边距
    mainLayout->setSpacing(0);
    mainLayout->setContentsMargins(0, 0, 0, 0);

    // 前缀标签
    QLabel *dPrefix = new QLabel("滚珠直径", bottomWidget);
    dPrefix->setStyleSheet("font-size: 14px;"); // 示例样式
    dPrefix->setFixedSize(80, 30);
    mainLayout->addWidget(dPrefix, 2, 0);

    // QLineEdit
    QLineEdit *diameter = new QLineEdit(bottomWidget);
    diameter->setPlaceholderText("请输入内容");
    diameter->setFixedSize(100, 30); // 示例大小
    diameter->setObjectName("customInput");
    diameter->setStyleSheet("font-size: 14px;"); // 示例样式
    diameter->setReadOnly(true);
    mainLayout->addWidget(diameter, 2, 1, 1, 1, Qt::AlignHCenter);

    // QLabel
    QLabel *dSuffix = new QLabel("mm", bottomWidget);
    dSuffix->setFixedSize(30, 30); // 示例大小
    dSuffix->setStyleSheet("font-size: 14px;"); // 示例样式
    mainLayout->addWidget(dSuffix, 2, 2, 1, 1, Qt::AlignHCenter);

    bottomWidget->setLayout(mainLayout);
    bottomWidget->show();

    return app.exec();
}



相关推荐

一、概述 QT是一个跨平台的C++库,主要用来开发图形界面(GUI)程序,它支持多种操作系统 ,如Windows、Linux、Android、ios、gnx、vxworks。 官网:https://w

一、预览 通过窗体-预览 或者 ctrl+R打开预览。 可以使用不同的内置风格、新式表、设备皮肤进行预览。在应用程序可以通过调用QApplication::setStyleSheet()来加载样式表实

代码编辑: Ctrl + Space: 激活代码补全 Ctrl + /: 注释/取消注释当前行或选定代码 Ctrl + I: 自动缩进选定代码 Ctrl + Shift + U: 转换选定文本为大写

在 Qt 中,输出变量值通常是用于调试目的,你可以使用多种方法来打印或显示变量的值。以下是一些常见的方法: 1、使用 qDebug: qDebug 是 Qt 中用于输出调试信息的宏。它可以将输出发送到

在 Qt 中全局加载一个 TTF 字体文件并使用它,你可以在程序初始化时期,比如在 main 函数中加载字体。以下是加载全局字体的步骤: 加载字体文件:使用 QFontDatabase::addAp

一、对于窗口 (QMainWindow, QDialog, 等): 1、move() 方法: 使用 move() 方法可以将窗口移动到屏幕上的指定位置。 QMainWindow *window = n

Qt框架中使用new关键字创建的对象通常需要手动释放,但是Qt提供了一种父子关系机制,可以自动管理对象的内存。当你使用new创建一个对象并将其分配给一个父QObject时,这个对象将会在父对象被销毁时

在Qt中,border-radius 在样式表中不会对顶层窗口生效。顶层窗口是指没有父窗口的窗口,通常是您的应用程序的主窗口或者独立的弹出窗口。由于安全性和平台兼容性的原因,很多样式表中的属性在顶层窗

在Qt中,connect函数用于连接信号和槽。从Qt 5开始,你可以使用C++11的lambda表达式作为槽函数,这样可以使你的代码更加简洁,尤其是当你想要对信号进行一些简单的处理时,而不想去定义一个

1. 定义全局常量 全局常量可以在一个头文件中使用 const 关键字或 #define 预处理器来定义: // constants.h #ifndef CONSTANTS_H #define CO