QT C++ widget layout 嵌套 例子2

在上篇文章中描述了實中套虛(用setLayout),虛中套實(用addWidget)。

本文再加1條,虛中套虛(用addLayout)。

所謂虛中套虛,是layout 套 layout 。

另外用循環代碼生成從左到右的相同結構界面。這是和拖拉GUI組件相比的優點之一。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1-效果

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2-1 布局關系圖1

? 說明:按照實中套虛,虛中套實原則

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖2-1布局關系示意圖2

? ? ? ? ? ? ? ? ? ? ? ? ? ?說明:因為可以虛中套虛,省掉了圖2-1中紫色部分

1.頭文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QLabel>
#include <QString>
#include <QLineEdit>
//#include <QHBoxLayout>
#include <QGridLayout>
#include <QFrame>
QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE
//定義了兩個結構體,實現界面和數據分離
struct UserData//數據
{
? ? QString str;
};
struct UserPlot//界面顯示組件,結構化后方便調整界面
{
? ? QWidget w;//外觀上包含下面三個,實際上經過布局中繼
? ? QLabel lb;
? ? QLineEdit le;
? ? QFrame *l;//分割線
};
class Widget : public QWidget
{
? ? Q_OBJECT
public:
? ? Widget(QWidget *parent = nullptr);
? ? ~Widget();
private:
? ? Ui::Widget *ui;
? ? UserPlot up[3];//3個左到右排列
? ? UserData data[3];//3個,0對應上面的0,1對應上面的1,2對應上面的2
};
#endif // WIDGET_H
?

2.cpp文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
? ? : QWidget(parent)
? ? , ui(new Ui::Widget)
{
? ? ui->setupUi(this);
? ? QHBoxLayout *mainLayout = new QHBoxLayout;
? ? QGridLayout *subLayout0 = new QGridLayout;
? ? QGridLayout *subLayout1 = new QGridLayout;
? ? QGridLayout *subLayout2 = new QGridLayout;
? ? QGridLayout *subLayoutArray[3]= {subLayout0,subLayout1,subLayout2};
? ? QFrame *fp;
? ? data[0].str=QString("BeiJin");
? ? data[1].str=QString("ChongQin");
? ? data[2].str=QString("GuangZhou");
? ? for(int i=0;i<3;i++)//mainLayout布局里套了3個QWidget或layout
? ? {
? ? ? ? up[i].lb.setText(data[i].str);
? ? ? ? if (i<2)
? ? ? ? { ? up[i].l=new QFrame(this);
? ? ? ? ? ? fp=up[i].l;//豎線
? ? ? ? ? ? fp->setFrameShape(QFrame::VLine);//豎線
? ? ? ? ? ? fp->setFrameShadow(QFrame::Sunken);//豎線
? ? ? ? }
? ? ? ? subLayoutArray[i]->addWidget(&up[i].lb,0,0,1,1,Qt::AlignTop);//每個QGridLayout里

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//套了QLabel
? ? ? ? subLayoutArray[i]->addWidget(&up[i].le,1,0,1,1,Qt::AlignTop);//每個QGridLayout里

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//套了QLineEdit
? ? ? ? if (i<2)
? ? ? ? subLayoutArray[i]->addWidget(fp,0,1,2,1);//每個QGridLayout里套了QFrame,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //實際上是分割豎線
? ? ? ? //up[i].w.setLayout(subLayoutArray[i]);//每個QWidget里套了個QGridLayout
? ? ? ? //mainLayout->addWidget(&up[i].w);//上面一行與本行的效果,等效于下一行
? ? ? ? mainLayout->addLayout(subLayoutArray[i]);//layout 里 套 layout
? ? ? ? this->resize(400,100);
? ? }
? ? setLayout(mainLayout);//widget里套了個mainLayout布局
}

Widget::~Widget()
{
? ? delete ui;
}
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11958.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11958.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11958.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

記錄接口請求偶發504 Gateway Time-out問題

項目場景&#xff1a; 我們將服務部署到A公司服務器中&#xff0c;使用了共五臺服務器&#xff0c;分別是&#xff1a;1.NG服務器 2.日志服務器 3.緩存服務器 4.應用服務器1 5.應用服務器2 。而請求過來首先到達的是他們的物理代理服務器&#xff0c;然后再轉發請求到我們的ng…

【Neo4jJDK開箱即用的安裝全流程】

neo4j:命令行本地訪問loclhost neo4j:命令行本地訪問loclhost2 neo4j操作 Neo4j桌面版數據庫導出導入 Neo4j安裝與配置以及JDK安裝與配置教程&#xff08;超詳細&#xff09; Neo4j 安裝、使用教程 Neo4j安裝教程 Neo4J桌面版的配置和連接Pycharm jdk-neo對應版本 JDK ORACLE中…

數據結構(四)————二叉樹和堆(中)

制作不易&#xff0c;三連支持一下唄&#xff01;&#xff01;&#xff01; 文章目錄 前言一、堆的概念及結構二、堆的實現三.堆的應用 總結 前言 CSDN 這篇博客介紹了二叉樹中的基本概念和存儲結構&#xff0c;接下來我們將運用這些結構來實現二叉樹 一、堆的概念及結構 1…

招聘公司要求跳槽時間間隔不能太短,我的簡歷不符合要求,怎么辦?

很多招聘公司要求就很奇葩,什么三五原則,什么二一原則,意思就是,你幾年內,不能在超過幾家公司內任職。你就說多奇葩啊,他們都不能保證自己的員工在自己公司干多久,甚至裁掉剛干了半年的員工,也是他們干出來的事,然后他們還好意思有這種奇葩要求。 目錄 1 虛假的雙向選…

OpenPCDet算法的網絡結構及工作原理

OpenPCDet是一個用于三維點云目標檢測的開源算法庫。它提供了完整的目標檢測流程&#xff0c;包括數據預處理、網絡模型、損失函數、后處理等。OpenPCDet基于PyTorch框架實現&#xff0c;并針對點云數據進行了深度優化&#xff0c;以實現高效的目標檢測和定位。 OpenPCDet的目…

SpringMVC 注解詳解

SpringMVC 注解詳解 1. 引言 SpringMVC 是 Spring 框架中的 Web 層解決方案&#xff0c;它通過注解的方式來簡化 MVC 模式的實現。本篇將詳細介紹 SpringMVC 中常用的注解及其用法。 2. SpringMVC 注解分類 SpringMVC 的注解主要分為以下幾類&#xff1a; 2.1 核心注解 C…

用sunoAI寫粵語歌的方法,博主已經親自實踐可行

粵語歌還是很好聽的&#xff0c;那么如何使用suno進行粵語歌的創作呢&#xff1f; 本文和大家進行分享下如何進行粵語歌曲的創作。 訪問地址如下&#xff08;電腦端/手機端一個地址&#xff09;&#xff1a; ?https://suno3.cn/#/?i8NCBS8_WXTT 在微信瀏覽器中也可以直接…

css 案例 橫向滾動漸變

效果 完整代碼&#xff1a; <template><view class"content"><view class"tab"><view class"tab-item" v-for"(item,index) in tab" :key"index" click"handlerTab(index)":class"ind…

winserver系統設置圖片查看器

新建 .bat 批處理執行文件&#xff0c;內容如下&#xff1a; echo off&cd&color 0a&cls echo Set Win10 Photo Viewer reg add "HKLM\SOFTWARE\Microsoft\Windows Photo Viewer\Capabilities\FileAssociations" /v ".jpg" /t REG_SZ /d Photo…

MySQL——利用變量進行查詢操作

新建鏈接&#xff0c;自帶world數據庫&#xff0c;里面自帶city表格。 DQL # MySQL利用變量進行查詢操作 set cityNameHaarlemmermeer; select * from city where NamecityName;# 多個結果查詢 set cityName1Haarlemmermeer; set cityName2Breda; set cityName3Willemstad; s…

Mysql--期末復習

目錄 一.變量 1.系統變量 global session 2.用戶自定義變量 3.局部變量 二.觸發器 1.pysx函數(銷售)拼音縮寫觸發器 2.goods維護(存儲過程) 3.xkglxt 4.訂單延期 一.變量 1.系統變量 global session 2.用戶自定義變量 1.不用提前聲明&#xff0c;使用時直接 變量…

古月居講師/簽約作者招募計劃

機器人&#xff0c;作為一個集成了多學科技術的復雜系統&#xff0c;其開發過程充滿了挑戰。為了幫助開發者們更好地克服這些挑戰&#xff0c;提升項目的開發效率和質量&#xff0c;古月居特別招募[博客簽約作者/課程講師]。如果您平常熱愛記錄、分享開發者經驗的習慣&#xff…

Emby for Mac(輕松管理多媒體影音庫)1.9.9中文版

Emby for Mac是一款強大的多媒體影音庫管理工具&#xff0c;可以幫助用戶輕松管理和瀏覽自己的影音資源。它可以將用戶的個人視頻、音樂和照片組合在一起&#xff0c;并將其流式傳輸到用戶的設備上。 Emby for Mac 1.9.9中文版下載 Emby for Mac具有易于使用的界面&#xff0c;…

分布式與一致性協議之PBFT算法

在分布式系統中&#xff0c;數據的一致性是一個至關重要的問題。為了保證分布式系統中節點之間的數據一致性&#xff0c;人們提出了許多一致性協議和算法。 其中&#xff0c;PBFT&#xff08;Practical Byzantine Fault Tolerance&#xff0c;實用拜占庭容錯&#xff09;算法是…

content-type之multipart/form-data和application/json比較

multipart/form-data 知識點: 用途: 主要用于文件上傳以及包含非ASCII字符或二進制數據的表單數據提交。它將表單數據分割成多個部分&#xff0c;每個部分前都有一個boundary字符串作為分隔&#xff0c;可以包含文本字段和文件字段。結構: 包含了Content-Disposition頭部&…

機器學習案例:加州房產價格(四)

參考鏈接&#xff1a;https://hands1ml.apachecn.org/2/#_12 數據探索和可視化、發現規律 通過之前的工作&#xff0c;你只是快速查看了數據&#xff0c;對要處理的數據有了整體了解&#xff0c;現在的目標是更深的探索數據。 首先&#xff0c;保證你將測試集放在了一旁&…

【Docker系列】Linux部署Docker Compose

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

RestTemplate接口請求發送json、form數據格式以及處理接口錯誤狀態碼400 null

在使用RestTemplate發送HTTP請求時&#xff0c;你可以通過不同的方式發送JSON或表單數據&#xff08;application/x-www-form-urlencoded&#xff09;。同時&#xff0c;處理接口錯誤狀態碼&#xff08;如400&#xff09;和返回null的情況也是很重要的。以下是一些示例代碼&…

山東濟南中國當代文化名人顏廷利:大自然賦予人類眾生的真正貴重禮物

大自然賦予了眾生---火&#xff08;太陽&#xff0c;萬物生長靠太陽&#xff09;、水&#xff08;河流&#xff0c;水是生命之源&#xff09;、木&#xff08;空氣&#xff0c;生命就在一翕一合的呼吸之間&#xff09;、土&#xff08;大地&#xff0c;坤為大地之母&#xff0c…

【Python】Python中類的__iter__()方法

在Python中&#xff0c;__iter__ 方法是一個特殊的方法&#xff0c;它用于定義一個對象的迭代器行為。這個方法是面向對象編程中實現可迭代對象&#xff08;即支持迭代的對象&#xff09;的一部分。當你創建一個類&#xff0c;并且希望其實例能夠在例如 for 循環中被迭代時&…