本系列文章全面的介绍了QT中的57种控件的使用方法以及示例,包括 Button(PushButton、toolButton、radioButton、checkBox、commandLinkButton、buttonBox)、Layouts(verticalLayout、horizontalLayout、gridLayout、formLayout)、Spacers(verticalSpacer、horizontalSpacer)、Item Virws (Model-Based) (listView、treeView、tableView、columnView、undoView) 、DisPlay Widgets(listWidget、treeWidget、tableWidget)、Containers(groupBox、scrollArea、toolBox、tabWidget、stackedWidget、frame、widget、mdiArea、dockWidget、axWidget)、Input Widgets(comboBox、fontComboBox、lineEdit、textEdit、plainTextEdit、spinBox、doubleSpinBox、timeEdit、dateEdit、dateTimeEdit、dial、horizontalScrollBar、verticalScrollBar、horizontalSlider、verticalSlider、keySequenceEdit)、item Widgets(Item-Based) (label、textBrowser、graphicsView、calendarWidget、lcdNumber、progressBar、line、openGLWidget、quickWidget) 界面的自适应界面的开发,控件接口的调用、QSS样式的举例,较为全面且详细的介绍了所有的控件。
本文详细的介绍了QGridLayout控件的各种操作,例如 头文件、创建控件 、创建Layout、添加控件、添加控件伸缩因子、添加间隔和边距、插入控件、移除控件、清空布局、获取控件、设置布局到窗口、.h源代码、cpp源代码、继承关系、系列文章等等操作
本系列QT全面详解文章目前共有五十七篇,本系列文章较为详细的讲述了QT控件的操作和使用。
选择付费专栏
1.内容全面:常用接口的所有操作 详细举例
2.内容详细:QSS、信号槽 详细举例
3.快速开发:日常开发中所有控件 逐个精通
4.控件全面:QT中所有控件包含其中 全面熟悉
5.内容保障:57种控件全部涵盖其中 内容全面
6.内容质量:QT控件使用详解专栏 质量分>90分, 阅读量超30万+
7.控件精通:全面学习速成 界面大师
8.高效学习:不到一个月精通全部控件
版权声明:本文禁止转载、复制二次发布,仅供付费读者研究
有相关问题请联系 Dream.2017@qq.com 官方网站 www.dreambegins.vip
QT QGridLayout控件 全面详解目录
1 头文件
2 创建控件
3 创建Layout
4 添加控件
5 添加控件并设置行和列的跨度
6 设置间隔和边距
7 移除控件
8 清空布局
9 获取控件
10 设置布局到窗口
11 .h源文件
12 .cpp源文件
13 继承关系
14 相关文章
15 系列文章
QGridLayout是Qt框架中的一种布局管理器,用于在网格中排列控件。它允许你将控件放置在一个二维的网格中,指定每个控件的行和列位置。这种布局方式非常灵活,适合用于复杂的界面设计。
网格排列:QGridLayout允许你在多个行和列中放置控件,可以精确控制每个控件的位置。
自动调整大小:当窗口大小改变时,QGridLayout会自动调整子控件的大小和位置。
控件合并:可以通过合并多个行或列来创建更大的控件区域,使用addWidget()方法的额外参数来实现。
间距和边距:可以设置控件之间的间距和布局的边距,以控制布局的外观。
1 头文件
#include <QGridLayout>
2 创建控件
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
// 创建主窗口
QWidget window;
window.setWindowTitle("QGridLayout Example");
// 创建QGridLayout
QGridLayout *gridLayout = new QGridLayout(&window);
// 创建控件
QLabel *label1 = new QLabel("Label 1");
QLabel *label2 = new QLabel("Label 2");
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
QPushButton *button3 = new QPushButton("Button 3");
// 添加控件到网格布局
gridLayout->addWidget(label1, 0, 0); // 第一行第一列
gridLayout->addWidget(label2, 0, 1); // 第一行第二列
gridLayout->addWidget(button1, 1, 0); // 第二行第一列
gridLayout->addWidget(button2, 1, 1); // 第二行第二列
gridLayout->addWidget(button3, 2, 0, 1, 2); // 第三行,跨越两列
// 设置行和列的拉伸因子
gridLayout->setRowStretch(1, 1); // 第二行拉伸
gridLayout->setColumnStretch(1, 1); // 第二列拉伸
// 设置布局
window.setLayout(gridLayout);
window.resize(300, 200);
window.show();
return app.exec();
}
3 创建Layout
QGridLayout *gridLayout = new QGridLayout();
4 添加控件
使用 addWidget() 方法将控件添加到指定的行和列。
QPushButton *button1 = new QPushButton("按钮 1");
QPushButton *button2 = new QPushButton("按钮 2");
gridLayout->addWidget(button1, 0, 0); // 在第 0 行第 0 列添加按钮 1
gridLayout->addWidget(button2, 0, 1); // 在第 0 行第 1 列添加按钮 2
5 添加控件并设置行和列的跨度
你可以使用 addWidget() 方法的额外参数设置控件在网格中占用的行和列的跨度。
QPushButton *button3 = new QPushButton("按钮 3");
gridLayout->addWidget(button3, 1, 0, 1, 2); // 在第 1 行第 0 列添加按钮 3,占用 1 行 2 列
6 设置间隔和边距
使用 setSpacing() 和 setContentsMargins() 方法设置控件之间的间隔和布局的边距。
gridLayout->setSpacing(10); // 设置控件之间的间隔为 10 像素
gridLayout->setContentsMargins(15, 15, 15, 15); // 设置布局的边距
7 移除控件
使用 removeWidget() 方法可以从布局中移除控件。
gridLayout->removeWidget(button1); // 从布局中移除 button1
8 清空布局
如果你想清空布局中的所有控件,可以使用 QLayout::deleteLater() 方法。
//QLayoutItem *item;
//while ((item = gridLayout->takeAt(0)) != nullptr) {
// delete item->widget(); // 删除控件
// delete item; // 删除布局项
//}
9 获取控件
你可以使用 itemAt() 方法获取布局中的控件。
QWidget *widget = gridLayout->itemAt(0)->widget(); // 获取索引 0 处的控件
10 设置布局到窗口
将布局设置为窗口的布局。
//QWidget *window = new QWidget;
//window->setLayout(gridLayout);
//window->show();
11 .h源文件
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_QGridLayout.h"
#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QDebug>
class QGridLayout : public QMainWindow
{
Q_OBJECT
public:
QGridLayout(QWidget *parent = nullptr);
~QGridLayout();
private:
Ui::QGridLayoutClass ui;
};
12 .cpp源文件
#include "QGridLayout.h"
QGridLayout::QGridLayout(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QGridLayout *gridLayout = new QGridLayout();
QPushButton *button1 = new QPushButton("按钮 1");
QPushButton *button2 = new QPushButton("按钮 2");
gridLayout->addWidget(button1, 0, 0); // 在第 0 行第 0 列添加按钮 1
gridLayout->addWidget(button2, 0, 1); // 在第 0 行第 1 列添加按钮 2
QPushButton *button3 = new QPushButton("按钮 3");
gridLayout->addWidget(button3, 1, 0, 1, 2); // 在第 1 行第 0 列添加按钮 3,占用 1 行 2 列
gridLayout->setSpacing(10); // 设置控件之间的间隔为 10 像素
gridLayout->setContentsMargins(15, 15, 15, 15); // 设置布局的边距
gridLayout->removeWidget(button1); // 从布局中移除 button1
//QLayoutItem *item;
//while ((item = gridLayout->takeAt(0)) != nullptr) {
// delete item->widget(); // 删除控件
// delete item; // 删除布局项
//}
QWidget *widget = gridLayout->itemAt(0)->widget(); // 获取索引 0 处的控件
//QWidget *window = new QWidget;
//window->setLayout(gridLayout);
//window->show();
}
QGridLayout::~QGridLayout()
{}
13 继承关系
14 相关文章
15 系列文章
ps: 其它说明
希望大家多点点赞,收藏,也希望多评论,指出不足的地方,因为是系列文章所以有不足的地方会整个系列优化,谢谢大家支持