首页 > 其他分享 >QGridLayout使用

QGridLayout使用

时间:2023-12-22 11:36:18浏览次数:28  
标签:pixmap QSizePolicy itemHeight itemWidth QGridLayout 使用 gridLayout new

一、概述

  使用QGridLayout制作一个九宫格,如下图:

 

二、代码示例

#include "GridLayoutExampleWindow.h"

GridLayoutExampleWindow::GridLayoutExampleWindow(QWidget* parent)
    : QWidget(parent)
{
    this->setWindowTitle("网格布局");
    this->setFixedSize(800, 480);

    gridLayout = new QGridLayout(this);
    //gridLayout->setHorizontalSpacing(50);//设置水平间距
    //gridLayout->setVerticalSpacing(50);//设置竖直间距
    gridLayout->setSpacing(5);//设置两个方向的间距
    //gridLayout->setRowStretch(1, 2);//设置第一行的弹簧系数
    //gridLayout->setColumnStretch(1, 3);//设置指定列的弹簧系数
    gridLayout->setMargin(5);//设置周边填充
    int itemWidth = this->width() / 3;
    int itemHeight = this->height() / 3;
    cv::Mat src = imread("images/flowers.jpeg");
    //cv::Mat src = imread("images/face_shibie.png");
    QPixmap pixmap = ImageUtils::getPixmap(src);
    label = new QLabel(this);
    label->resize(itemWidth, itemHeight);
    label->setScaledContents(true);//设置缩放内容,如果不设置,QPixmap填充会有问题
    label->setPixmap(pixmap);
    label2 = new QLabel(this);
    label2->resize(itemWidth, itemHeight);
    label2->setScaledContents(true);
    label2->setPixmap(pixmap);
    label3 = new QLabel(this);
    label3->resize(itemWidth, itemHeight);
    label3->setPixmap(pixmap);
    label3->setScaledContents(true);
    label4 = new QLabel(this);
    label4->resize(itemWidth, itemHeight);
    label4->setScaledContents(true);
    label4->setPixmap(pixmap);
    label5 = new QLabel(this);
    label5->resize(itemWidth, itemHeight);
    label5->setScaledContents(true);
    label5->setPixmap(pixmap);
    label6 = new QLabel(this);
    label6->resize(itemWidth, itemHeight);
    label6->setScaledContents(true);
    label6->setPixmap(pixmap);
    label7 = new QLabel(this);
    label7->resize(itemWidth, itemHeight);
    label7->setScaledContents(true);
    label7->setPixmap(pixmap);
    label8 = new QLabel(this);
    label8->resize(itemWidth, itemHeight);
    label8->setScaledContents(true);
    label8->setPixmap(pixmap);
    label9 = new QLabel(this);
    label9->resize(itemWidth, itemHeight);
    label9->setScaledContents(true);
    label9->setPixmap(pixmap);

   //填充整个表格 QSizePolicy sizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); label->setSizePolicy(sizePolicy); QSizePolicy sizePolicy2(QSizePolicy::Minimum, QSizePolicy::Expanding); label2->setSizePolicy(sizePolicy2); QSizePolicy sizePolicy3(QSizePolicy::Minimum, QSizePolicy::Expanding); label3->setSizePolicy(sizePolicy3); QSizePolicy sizePolicy4(QSizePolicy::Minimum, QSizePolicy::Expanding); label4->setSizePolicy(sizePolicy4); QSizePolicy sizePolicy5(QSizePolicy::Minimum, QSizePolicy::Expanding); label5->setSizePolicy(sizePolicy5); QSizePolicy sizePolicy6(QSizePolicy::Minimum, QSizePolicy::Expanding); label6->setSizePolicy(sizePolicy6); QSizePolicy sizePolicy7(QSizePolicy::Minimum, QSizePolicy::Expanding); label7->setSizePolicy(sizePolicy7); QSizePolicy sizePolicy8(QSizePolicy::Minimum, QSizePolicy::Expanding); label8->setSizePolicy(sizePolicy8); QSizePolicy sizePolicy9(QSizePolicy::Minimum, QSizePolicy::Expanding); label9->setSizePolicy(sizePolicy9); gridLayout->addWidget(label, 1, 1);//第二个参数行,第三个参数列 gridLayout->addWidget(label2, 1, 2); gridLayout->addWidget(label3, 1, 3); gridLayout->addWidget(label4, 2, 1); gridLayout->addWidget(label5, 2, 2); gridLayout->addWidget(label6, 2, 3); gridLayout->addWidget(label7, 3, 1); gridLayout->addWidget(label8, 3, 2); gridLayout->addWidget(label9, 3, 3); /*gridLayout->setRowStretch(0, 1); gridLayout->setRowStretch(1, 1); gridLayout->setRowStretch(2, 1); gridLayout->setColumnStretch(0, 1); gridLayout->setColumnStretch(1, 1); gridLayout->setColumnStretch(2, 1);*/ } void GridLayoutExampleWindow::resizeEvent(QResizeEvent* event) { } GridLayoutExampleWindow::~GridLayoutExampleWindow() { }

 

标签:pixmap,QSizePolicy,itemHeight,itemWidth,QGridLayout,使用,gridLayout,new
From: https://www.cnblogs.com/tony-yang-flutter/p/17921242.html

相关文章

  • APP如果想要分发给用户去使用,怎么办?
    无论是安卓的应用还是iOS的应用,所有的APP如果想要分发给用户去使用,都必须要上架到应用商店或者是分发平台进行操作。对于安卓的APP还比较好一些,可以申请上架到应用商店,也可以直接把apk上传到分发平台,生成二维码或者短链接就可以使用。苹果开发者就没这个好运气了,上架AppStore是......
  • 如何使用不同的纹理贴图制作逼真的 3D 图形?
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎在过去的很多年里,我一直在视觉效果行业工作,发现几乎每个艺术家都致力于在3D产品......
  • mac下Tmux的简单使用
    我使用tmux目前主要用来把一个窗口切分成几个,所以只是一些简单的使用。搜索网上的教程太过复杂,甚至一些概念没搞清楚,前缀键、快捷键的使用也不太清楚。所以,还是费了一些工夫。所以,简单记录一下。避免时间长了忘记。一、前缀键:默认是Ctl+b。就是使用快捷键前,你得先按下ctl+b。......
  • 【学习笔记】使用科学和魔法。
    一直没有太理解我们是怎么上网的,今天逼着自己问了问GPT,这是他的回答。因为众所周知的原因,下文中“虚拟virtual私人private网络network”均用【数据删除】代替。连接WiFi:当用户在设备上连接WiFi时,他们实际上是连接到一个本地网络,这个网络由无线路由器提供。这个路由器......
  • CRM系统的使用方法和注意事项:销售管理功能的设置和优化
     很多企业有各种营销方式,但线索良莠不齐,转化率低,成本高;客户数据分散,没法实时掌握客户动态;营销过程控制不了,销售追踪艰难。各类问题都能通过CRM管理系统去解决。什么是CRM系统呢?包括哪些销售管理功能?一、CRM系统是什么?CRM系统,全称CustomerRelationshipManagement,即客户管......
  • Vue + Django 使用wangeditor 上传图片 显示跨域报错
    报错:newsDetailed:1 AccesstoXMLHttpRequestat'http://www.py32api.com:8000/users/uploadFile/'fromorigin'http://localhost:8080'hasbeenblockedbyCORSpolicy:RequestheaderfieldtokenisnotallowedbyAccess-Control-Allow-Head......
  • aardio使用网页写界面,解决Ctrl+鼠标滚轮缩放界面
    在html里添加<metaname="viewport"content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">不起作用。通过添加web的启动参数,也不起作用翻遍谷歌,没解决最后在github上找到方法,从chrome扩展里找blockzoom插件,找到源代码看了一下,解决在html代码......
  • 使用css绘制箭头
    使用css也能直接写出箭头符号,这样不用都使用图片能减少打包的大小。下面是一些常用箭头的css写法://向上的箭头<viewclass="button-up"></view>//css的内容.button-up{position:relative;padding:5px;margin:10pxauto;background:#000;......
  • TVBOX下载配置及本地包使用教程
    本文以电视上使用为准。【TVBOX软件下载】https://qiqi2020.lanzouq.com/b09svqv1cTVBOX有各种改版,这里推荐下载影视仓_5.0.13.apk,因为它支持“多仓”:【软件安装】打开电视上的“当贝助手”,用它来上传软件安装包,其它可以传文件到电视的软件也可以。选择文件快传:电脑浏览器打......
  • bash基础使用
    小例子参考if语句a=10b=20if[$a==$b];then echo"a==b"elif[$a-lt$b]then echo"a<b"else echo'a可能>b'fi变量声明使用两种方式来声明变量#1exporta=10#2a=10上面使用exporta=10的时候,可以将这个变量暴露给其他的应用来使用,如......