1. 程式人生 > >Qt佈局簡介及其彈簧的使用.

Qt佈局簡介及其彈簧的使用.

常用的佈局有:QVBoxLayout,QHBoxLayout,QGridLayout.分別為垂直佈局,水平佈局,表格佈局.

入門要掌握的概念理解能力是,一定要有容器的概念,這幾種佈局都相當於容器,容器中能巢狀各種元素(也就是控制元件)和容器(容器間也能相互包含).

每個容器都是獨立的個體,最外邊的容器將內元素組成一個整體.<意會意會,重在事務理解,與程式碼無關>

提前提及這兩個函式:這是設定當前容器中各個元素所佔據比例的大小的方法.<比如a水平容器有四個元素,分別設定,1,2,1,2則它們所佔空間為綜合的六分之幾>

bool QBoxLayout::setStretchFactor(QWidget * widget, int stretch)

  bool QBoxLayout::setStretchFactor(QLayout * layout, int stretch)


還需要提及的概念是:佈局中彈簧的使用.<適當下增加""隱形元素""佔個位置.>,這裡注意我的措辭,元素,也就是說彈簧可以被放置到佈局中使用.addStretch是帶參的,多少個.

增加元素間寬度,函式:addspacing.

直接貼段程式碼加圖就能很好理解了:

Widget::Widget(QWidget*parent)
:QWidget(parent)
{
this->resize(QSize(200,300));
QHBoxLayout*One=new
QHBoxLayout;
QHBoxLayout*Two=newQHBoxLayout;
QLabel*Id=newQLabel;
Id->setText("Id:");
QLineEdit*InputId=newQLineEdit;
One->addWidget(Id);
One->addStretch();
One->addWidget(InputId);
//One->setStretchFactor(Id,1);
//One->setStretchFactor(InputId,2);
QLabel*Pass=newQLabel;
Pass->setText("Pass:"
);
QLineEdit*InputPass=newQLineEdit;
Two->addWidget(Pass);
Two->addWidget(InputPass);
Two->addStretch();
QGridLayout
//this->setLayout();
QVBoxLayout*Out=newQVBoxLayout(this);
Out->addStretch();
Out->addLayout(One);
Out->addLayout(Two);
//Out->setStretchFactor(One,1);
//Out->setStretchFactor(One,2);
//Out->addStretch();
QPushButton*Down=newQPushButton;
Down->setText("Down");
Out->addWidget(Down);
}


QGridLayout中的addWidge函式:幫助文件中函式原型如下.

void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

備註:你要自己清楚自己寫的是什麼,也就是過程可控,別瞎亂寫,結果當然不可控了.<或者這個函式自己顳部有自處理機制>

表格佈局:概念點無非就是,想表格那樣中規中矩舉,然後就是可能當中元素涉及到跨行或者跨列的<int rowSpan, int columnSpan>.(貼程式碼加貼圖,自己就可以理解了)

第一種:

MainWindow::MainWindow(QWidget*parent)
:QMainWindow(parent)
{
QTableView*tableView;
QStandardItemModel*model;
QGridLayout*gridLayout;
QPushButton*button1;
QPushButton*button2;
QPushButton*button3;
QPushButton*button4;
QWidget*widget;
gridLayout=newQGridLayout(this);
button1=newQPushButton("button1");
button2=newQPushButton("button2");
button3=newQPushButton("button3");
button4=newQPushButton("button4");
gridLayout->addWidget(button1,0,0,2,1);
gridLayout->addWidget(button2,0,1,1,1);
//gridLayout->addWidget(button4,1,0,1,1);
gridLayout->addWidget(button3,1,1,1,1);
QWidget*NewWin=newQWidget;
NewWin->setLayout(gridLayout);
NewWin->resize(QSize(200,100));
this->setCentralWidget(NewWin);
//this->setLayout(gridLayout);
this->resize(QSize(400,500));
//widget->show();
}

第二種:

MainWindow::MainWindow(QWidget*parent)
:QMainWindow(parent)
{
QTableView*tableView;
QStandardItemModel*model;
QGridLayout*gridLayout;
QPushButton*button1;
QPushButton*button2;
QPushButton*button3;
QPushButton*button4;
QWidget*widget;
gridLayout=newQGridLayout(this);
button1=newQPushButton("button1");
button2=newQPushButton("button2");
button3=newQPushButton("button3");
button4=newQPushButton("button4");
gridLayout->addWidget(button1,0,0,1,1);
gridLayout->addWidget(button2,0,1,1,1);
gridLayout->addWidget(button4,1,0,1,1);
gridLayout->addWidget(button3,1,1,1,1);
QWidget*NewWin=newQWidget;
NewWin->setLayout(gridLayout);
NewWin->resize(QSize(200,100));
this->setCentralWidget(NewWin);
//this->setLayout(gridLayout);
this->resize(QSize(400,500));
//widget->show();
}

相關推薦

Qt佈局簡介及其彈簧的使用.

常用的佈局有:QVBoxLayout,QHBoxLayout,QGridLayout.分別為垂直佈局,水平佈局,表格佈局. 入門要掌握的概念理解能力是,一定要有容器的概念,這幾種佈局都相當於容器,容器中能巢狀各種元素(也就是控制元件)和容器(容器間也能相互包含). 每個容

Qt發展歷史及其特點簡介

Qt 是一個跨平臺的C++應用程式框架,支援Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入式系統等。也就是說,Qt 可以同時支援桌面應用程式開發、嵌入式開發和移動開發,覆蓋了現有的所有主流平臺。你只需要編寫一次程式碼,

MVC架構簡介及其測試策略

輸入 mvc 強行 嘗試 部分 img 基本架構 fire 有用 最近在WEB端測試工作中陷入了瓶頸,單純的手動功能測試在沒有成熟的代碼規範之前還是很容易坑的,WEB自動化測試一時半會還沒有什麽進展,所以決定先學習一下網站用的MVC架構,跟著教程寫了一個小網站,大概也找

SQLyog簡介及其功能(附百度雲盤下載地址)

++ 基本 記錄 導出 對數 簡介 sam 接口 管理 一、軟件簡介   SQLyog 是一個快速而簡潔的圖形化管理MYSQL數據庫的工具,它能夠在任何地點有效地管理你的數據庫。SQLyog是業界著名的Webyog公司出品的一款簡潔高效、功能強大的圖形化MySQL數據庫管

轉載:Linux音頻驅動-OSS和ALSA聲音系統簡介及其比較

sdn stat 邏輯 音量 技術 hone ltr close clear Linux音頻驅動-OSS和ALSA聲音系統簡介及其比較 概述 昨天想在Ubuntu上用一下HTK工具包來繪制語音信號的頻譜圖和提取MFCC的結果,但由於前段時間把Ubuntu升級到13.0

01_Hive簡介及其工作機制

ofo .com 結構化 hdfs href htm hadoop 保存 簡單 1.Hive簡介   Hive是一個基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一個表。並提供類SQL查詢功能, 可以將sql語句轉換為MapReduce任務運行。其優點是

jvm簡介及其記憶體分佈介紹(入門級)

一.jvm執行機制 jvm啟動流程: java虛擬機器啟動的命令是通過java +xxx(類名,這個類中要有main方法)或者javaw啟動的。 執行命令後,系統第一步做的就是裝載配置,會在當前路徑中尋找jvm的config配置檔案。 找到jvm的config

常用的人臉表情資料庫簡介及其論文出處

【時間】2018.10.16 【題目】常用的人臉表情資料庫簡介及其論文出處   一、常用的人臉表情資料庫簡介 本文簡要的介紹一些公開的表情資料庫: (1)JAFFE人臉表情資料庫【12】:該資料庫是由日本ART建立的日本女性表情庫,其中的圖片採集於10名女性志願者,每個

Qt佈局管理(5):自定義佈局

Qt佈局管理(5):自定義佈局器(QLayout、QLayoutItem、QSpacerItem、QWidgetItem) 若對C++語法不熟悉,建議參閱《C++語法詳解》一書,電子工業出版社出版 自定義佈局需要使用QLayout和QLayoutItem類(佈局專案),其中QLayo

Qt佈局管理(4):網格佈局(QGridLayout類)

Qt佈局管理(4):網格佈局(QGridLayout類) 若對C++語法不熟悉,建議參閱《C++語法詳解》一書,電子工業出版社出版 1、網格佈局原理(見圖5-17): 基本原理是把視窗劃分為若干個單元格,每個子部件被放置於一個或多個單元格之中,各單元格的大小可由拉伸因子和一行或列中單

Qt佈局管理(3):內容邊距、間距和QSpacerItem類

Qt佈局管理(3):內容邊距(ContentsMargins)、間距(spacing)和QSpacerItem類 若對C++語法不熟悉可參閱《C++語法詳解》一書,電子工業出版社出版 內容邊距就是頁邊距,指的是佈局中的各子部件(內容)與周圍四個邊的距離,內容邊距比較簡單,下面列出需要使用

圖解STL中演算法的分類、簡介及其Demo

STL中包含演算法標頭檔案<algorithm>就可以使用其中的演算法了,使用這些通用的演算法可以使得程式碼更加簡單、易讀、通用。但是這些演算法有哪些呢?以及這些演算法的職能又是什麼?其實這些東西,候捷大師在他的《STL原始碼剖析》中都有列舉,且FluentCPP有一篇文章1

【學習筆記】平衡二叉樹(AVL樹)簡介及其查詢、插入、建立操作的實現

  目錄 平衡二叉樹簡介: 各種操作實現程式碼:   詳細內容請參見《演算法筆記》P319 初始AVL樹,一知半解,目前不是很懂要如何應用,特記錄下重要內容,以供今後review。   平衡二叉樹簡介: 平衡二叉樹由兩位前

Servlet簡介及其生命週期詳解

簡介        Servlet生命週期,即闡述Servlet從產生到毀滅的整個過程。         在Servlet產生到消亡的過程中,有三個生

Servlet簡介及其生命周期詳解

關於 post方法 創建 destroy 初始化 客戶端 生命周期 般的 destory 簡介 Servlet生命周期,即闡述Servlet從產生到毀滅的整個過程。 在Servlet產生到消亡的過程中,有三個生命周期函數,初始化方法init()

轉:QT安裝簡介

1、下載QT安裝包 下載網址:http://download.qt.io/ 或者http://download.qt.io/archive/qt/ 選擇一個你需要的版本,例如 5.10 點選進去後,選擇對應作業系統的安

機器學習:奇異值分解SVD簡介及其在推薦系統中的簡單應用

轉載自:https://www.cnblogs.com/lzllovesyl/p/5243370.html 本文先從幾何意義上對奇異值分解SVD進行簡單介紹,然後分析了特徵值分解與奇異值分解的區別與聯絡,最後用python實現將SVD應用於推薦系統。 1.SVD詳解 SVD(singul

自然語言處理中常見的10個任務簡介及其資源

from:http://www.datalearner.com/blog/1051509699533080 簡介 現在很多公司和組織每天都要處理大量的文字資訊,包括郵件、評論、客戶的電話等。將這些資料變成有用的資訊需要花費大量的時間。抽取這些資訊的一個核心的技能就是自然語言處理(Natura

Qt-佈局

文章目錄 簡述 sizeHint 簡述 佈局能排列控制元件的位置 sizeHint sizeHint 佈局總是跟著sizheHint息息相關的; 例如: 呼叫qDebug() << ui->pu

QT框架簡介

       剛開始接觸QT開發的時候用的是Qt 5.6.0版本,開發過程中沒有仔細瞭解過Qt具體的框架結構,只負責專案相關模組用C++進行開發和維護,對QT本身沒有關注,只是當成一個開發工具而已。隨著維護的內容深入,發現來對整個專案缺乏全面的瞭解,不知道為什