见其名知其意,QGridLayout 是一个网格形式的布局,他可以让控件或嵌套 layout 以网格形式在窗口中排布,我们只需在创建控件的时候指定其在网格中的位置即可。 【一个最简单的 QGridLayout 布局】 #include "cwidget.h" #include <QGridLayout> #include <QPushButton> CWidget:: CWidget(QWidget *parent) : QWidget(parent) { QGridLayout* grid = new QGridLayout(this); grid 嵌套 QGridLayout,外部的 QGridLayout 只负责设置四边的弹簧,然后留出中间的位置嵌套一个带有控件的 QGridLayout。 *parent) : QWidget(parent) { // 原 layout 不指定父窗口 QGridLayout* grid = new QGridLayout; grid
//添加头文件 #include <QLabel> #include <QLineEdit> #include <QComboBox> #include <QTextEdit> #include <QGridLayout QLabel> #include <QLineEdit> #include <QComboBox> #include <QPushButton> #include <QFrame> #include <QGridLayout LeftLayout=new QGridLayout();//左部布局,由于此布局管理器不是主布局管理器,所以不用指定父窗口 //向布局中加入需要布局的控件 LeftLayout->addWidget ButtomLayout->addWidget(OkBtn); ButtomLayout->addWidget(CancelBtn); /************/ QGridLayout *mainLayout=new QGridLayout(this); //实现主布局,指定父窗口this,也可调用this->setLayout(mainLayout)实现 mainLayout
coding: utf-8 -- """ 【简介】 网格布局管理例子 """ import sys from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout parent=None): super(Winform, self).init(parent) self.initUI() def initUI(self): # 1 grid = QGridLayout 【简介】 网格布局管理例子 """ import sys from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit, QTextEdit, QGridLayout titleEdit = QLineEdit() authorEdit = QLineEdit() contentEdit = QTextEdit() grid = QGridLayout
QVBoxLayout() layout.addWidget(label) self.setLayout(layout)NxN 的方块class MyGridLayout(QGridLayout import Qtfrom PySide6.QtGui import QColor, QFont, QPalettefrom PySide6.QtWidgets import QApplication, QGridLayout layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout)class MyGridLayout(QGridLayout
QVboxLayout垂直盒子布局 盒子布局,我们可以结合自带的”弹簧功能”addstrech 3.QLineEdit类库作用:单行文本框 ---- 本期知识视频教程 以下开始文字讲解: 一、网格布局QGridLayout 网格布局的类似样子 网格布局使用时候需要注意: 1.要导入类库QGridLayout 2.该布局的索引默认从0开始 3.使用网格布局前先要进行类的实例化 二、多行文本框QTextEdit 使用QTextEdit 四、总结强调 1.掌握网格布局的思想,掌握QGridLayout的应用。 2.掌握新控件多行文本框的使用。 本节知识源代码 import sys from PyQt5.QtWidgets import QApplication,QWidget,QLineEdit,QTextEdit,QLabel,QGridLayout letitle=QLineEdit() leauthor=QLineEdit() tecontent=QTextEdit() grid=QGridLayout
使用 例子使用QGridLayout布局。 mainLayout = new QGridLayout; mainLayout->addWidget(rotatableGroupBox, 0, 0); ... setLayout(mainLayout ); rotatableGroupBox为QGroupBox类,并在内部使用了QGridLayout布局。 QSlider); rotatableWidgets.enqueue(new QDial); rotatableWidgets.enqueue(new QProgressBar); ... /* 绑定QGridLayout 布局 */ rotatableLayout = new QGridLayout; rotatableGroupBox->setLayout(rotatableLayout); rotateWidgets
目录 1、 水平布局类(QHBoxLayout) 2、垂直布局类(QVBoxLayout) 3、网格布局类(QGridLayout) 3.1、单一的网络布局 3.2、跨越行、列的网络布局 4、表单布局类 ) QGridLayout(网格布局)是将窗口分隔成行和列的网格来进行排列。 QGridLayout类中的常用方法如下表所示: 3.1、单一的网络布局 来做个单一网格布局的小案例,创建QGridLayout的实例,并设置为窗口的布局,创建按钮的标签列表,在网格中创建一个位置列表 () grid.setSpacing(10) #把titleLabel放在QGridLayout布局的第1行第0列。 grid.addWidget(titleLabel, 1, 0) #把titleEdit放在QGridLayout布局的第1行第1列。
常用的三种布局方法: (1)使用水平布局类QHBoxLayout; (2)使用垂直布局类QVBoxLayout; (3)使用网格布局类QGridLayout。 这三种方法可以嵌套使用。 比起QHBoxLayout和HVBoxLayout, QGridLayout运用更加灵活。 QGridLayout的常用方法 (1)addWidget: [cpp] view plaincopy //放置一个控件到一个单元格 void addWidget ( QWidget (3)setSpacing [cpp] view plaincopy void QGridLayout::setSpacing ( int spacing ) 设置控件水平和垂直之间的间隔 *gridLayout = new QGridLayout; gridLayout->setColumnStretch(0, 1); gridLayout->setColumnStretch
微信截图_20181206111338.png 网格布局 QGridLayout是最通用的布局类。它将空间划分为行和列。 #! __init__() self.initUI() def initUI(self): grid = QGridLayout() self.setLayout 实例化QGridLayout类,并且把这个类设为应用窗口的布局。 grid = QGridLayout() self.setLayout(grid) 这是我们将要使用的按钮的名称。 布局使用了QGridLayout布局 我们创建了一个网格布局并且设置了组件之间的间距。 grid = QGridLayout() grid.setSpacing(10) 如果我们向网格布局中增加一个组件,我们可以提供组件的跨行和跨列参数。
[6] QGridLayout *echoLayout = new QGridLayout; echoLayout->addWidget(echoLabel, 0, 0); [7] QGridLayout *validatorLayout = new QGridLayout; validatorLayout->addWidget(validatorLabel ->addWidget(validatorLineEdit, 1, 0, 1, 2); validatorGroup->setLayout(validatorLayout); QGridLayout *accessLayout = new QGridLayout; accessLayout->addWidget(accessLabel, 0, 0); accessLayout [8] QGridLayout *layout = new QGridLayout; layout->addWidget(echoGroup, 0, 0); layout
网格布局 Qt 中还提供了 QGridLayout ⽤来实现⽹格布局的效果. 可以达到 M * N 的这种⽹格的效果. 代码示例:使⽤ QGridLayout 管理元素 1)代码中创建 QGridLayout 和 4 个按钮. 使⽤ addWidget 添加控件到布局管理器中. 但是添加的同时会指定两个坐标. 代码示例: 设置 QGridLayout 中元素的大小比例 1)创建 6 个按钮, 按照 2 ⾏ 3 列的⽅式排列 使用 setColumnStretch 设置每⼀列的拉伸系数 Widget:: 总的来说, 使⽤ QGridLayout 能够代替很多 QHBoxLayout 和 QVBoxLayout 嵌套的场景. 毕竟嵌套的代码写起来是⽐较麻烦的。 另外不要忘了, QGridLayout ⾥⾯也能嵌套 QHBoxLayout 和 QVBoxLayout ,QHBoxLayout 和 QVBoxLayout ⾥⾯也能嵌套 QGridLayout;灵活使
Figure: box layout QGridLayout 最常用的布局类应当是QGridLayout, 他将窗口分成不同的行和列. 1 #! ', '=', '+'] 17 18 grid = QtGui.QGridLayout() 19 20 j = 0 21 pos = [ 22 grid = QtGui.QGridLayout() 这一句就创建了grid layout. authorEdit = QtGui.QLineEdit() 20 reviewEdit = QtGui.QTextEdit() 21 22 grid = QtGui.QGridLayout QtGui.QApplication(sys.argv) 38 qb = GridLayout2() 39 qb.show() 40 sys.exit(app.exec_()) 41 grid = QtGui.QGridLayout
如果可以正常运行说明安装已经成功: import sys from PyQt5 import QtCore, QtWidgets from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout centralWidget = QWidget(self) self.setCentralWidget(centralWidget) gridLayout = QGridLayout QHBoxLayout, QLabel, QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget, QGridLayout controlLayout.setContentsMargins(0, 0, 0, 0) controlLayout.addWidget(btn) controlLayout.addWidget(slider) QGridLayout left = QGridLayout() left.setSpacing(10) left.addWidget(lblQuery, 0, 0, 1, 2) left.addLayout(queryVideo.layout
QGridLayout 5. QFormLayout 6. 嵌套布局 7. 布局管理 QHBoxLayout 水平 QVBoxLayout 垂直 QGridLayout 网格 QFormLayout 表单布局,两列的形式 addLayout() 插入子布局 addWidget( QGridLayout 控件占一格的例子 import sys from PyQt5.QtWidgets import QApplication, QWidget, QGridLayout, QPushButton __init__(parent) self.initUI() def initUI(self): # 1 grid = QGridLayout( 嵌套布局 import sys from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QVBoxLayout, QGridLayout
该示例显示了如何使用信号和槽来实现计算器小部件的功能,以及如何使用QGridLayout将子小部件放置在网格中。 通过绑定不同的按钮和不同的槽函数实现计算功能。 QGridLayout *mainLayout = new QGridLayout; //! [5] //!
dialog.cpp HEADERS += dialog.h dialog.h #ifndef DIALOG_H #define DIALOG_H #include <QDialog> #include<QGridLayout QPushButton *QuestionBtn,*InformationBtn,*WarningBtn,*CriticalBtn,*AboutBtn,*AboutQtBtn,*CustomBtn; QGridLayout CustomBtn=new QPushButton("Custom"); label=new QLabel("About Qt MessageBox:"); layout=new QGridLayout (this); layoutLabel=new QGridLayout; layoutBtn=new QGridLayout; layoutLabel->addWidget(label
self) btn2 = QPushButton("Stop", self) self.sec_label = QLabel(self) layout = QGridLayout self) btn2 = QPushButton("Stop", self) self.sec_label = QLabel(self) layout = QGridLayout self.file_list = QListWidget() self.btn = QPushButton('Start') layout = QGridLayout ) 补:QObject -> moveToThread 方式应用 QThread from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QGridLayout self.thread.finished.connect(app.exit) self.thread.start() self.initUI() def initUI(self): grid = QGridLayout
SaShuangYiBing 6 ''' 7 import sys 8 from PyQt5.QtWidgets import QApplication,QWidget,QPushButton,QGridLayout __init__() 13 self.initUI() 14 15 def initUI(self): 16 grid = QGridLayout
""" import sys from PyQt5.QtWidgets import QPushButton, QAction, qApp, QApplication,QWidget,QLabel,QGridLayout __init__() self.initUI() def initUI(self): grid = QGridLayout() self.setLayout QtWidgets import QPushButton,QWidget,QLineEdit,QTextEdit, QAction, qApp, QApplication,QWidget,QLabel,QGridLayout titleEdit = QLineEdit() authorEdit = QLineEdit() reviewEdit = QTextEdit() grid = QGridLayout
m_baseComboBox); connect(m_baseComboBox,SIGNAL(activated(int)),this,SLOT(ShowBase(int))); //布局 QGridLayout *mainLayout = new QGridLayout(m_ctrlFrame); mainLayout->setSpacing(20); mainLayout->addWidget( ); m_cancelBtn = new QPushButton(QString("取消")); m_okBtn->setAutoFillBackground(true); QGridLayout *topLayout = new QGridLayout; topLayout->addWidget(m_label1,0,0); topLayout->addWidget(m_comboBox1,0,1 include <QDialog> #include<QFrame> #include<QLabel> #include<QComboBox> #include<QTextEdit> #include<QGridLayout