視窗的布局

2021-08-03 02:51:59 字數 2427 閱讀 5505

一、如何布局

布局,layout,就是把各個控制項放在合適的位置,佔據適當大小的空間。

在qt中,使用布局器qlayout進行布局

1.它為我們自動計算各個控制項的大小和位置

2.當父視窗調整是,它根據既定策略policy來調整各個子視窗的大小和位置。

兩個常用的qlayout子類:

qhboxlayout:橫向布局

qvboxlayout:縱向布局

#ifndef mywin_h

#define mywin_h

#include

#include

#include

#include

class mywin:public qwidget

q_object

public:

mywin(qwidget* parent);

~mywin();

private:

qlineedit* m_lineedit;

qplaintextedit* m_textedit;

#include "mywin.h"

mywin::mywin(qwidget* parent):qwidget(parent)

//建立控制項物件

m_lineedit=new qlineedit(this);

m_textedit=new  qplaintextedit(this);

//建立布局器

qvboxlayout* layout=new qvboxlayout(this);

layout->addwidget(m_lineedit);

layout->addwidget(m_textedit);

//使用布局器

this->setlayout(layout);

mywin::~mywin()

#include "mywin.h"

int main(int argc,char * argv)

mywin a(null);

w.resize(400,300);//設定大小

w.move(100,100);//指定位置

w.show();

return a.exec();

二、視窗大小調整的策略

sizepolicy:用於描述乙個widget被resizing(調整大小)的時候

在qsizepolicy類中定義了七種策略

fixed:使用sizehint,不能更大不能更小

minimum:不得小於sizehint,可以更大,但不需要更小

maximum:不得大於sizehint,可以更小

preferred:優先使用sizehint,越大越好

expanding:使用sizehint,越大越好

minimumexpanding:不得小於sizehint,越大越好

lgnore:忽略sizehint,越大越好

相關的函式

//獲取當前的policy

qsizepolicy qwidget::sizepolicy()const

//設定新的policy

void setsizepolicy(qsizepolicy)

void setsizepolicy(qsizepolicy::policy  horizontal,qsizepolicy::policy::policy vertical)

sizehint 是有qwidget類有函式 virtual qsizesizehint()const;來得到

每一種widget視窗都需要重寫這個函式

作用:向布局器宣告自己需要的空間大小

注意:sizehint和sizepolicy,都是提供給布局器的信心,布局器qlayout會根據這兩個資訊來決定這個視窗控制項的實際尺寸。

例2:把例1的程式使用sizehint和sizepolicy進行調整

#include

"mywin.h"

mywin::mywin(qwidget *parent)

: qwidget(parent)

mywin::~mywin()

例3:乙個介面中可以使用多個布局器先橫向使用乙個再縱向使用乙個

#include

"mywin.h"

#include

#include

mywin::mywin(qwidget *parent)

: qwidget(parent)

mywin::~mywin()

如果用視覺化布局,可以通過打散和組合按鈕來實現布局

三、布局引數

sizehint :推薦大小

sizepolicy :策略

stretch factor :拉伸因子

maximum size/minimum size:上限與下限

Qt學習筆記 視窗的布局

布局 layout,就是把各個控制項放在合適的位置,佔據適當大小的空間。在qt中,使用布局器qlayout進行布局 1 它為我們自動計算各個控制項的大小和位置 2 當父視窗調整時,它根據既定策略policy來調整各個子視窗的大小和位置。兩個常用的qlayout子類 qhboxlayout 橫向布局 ...

RSD 教程 2 3 視窗布局

第一次啟動rsd 圖2.4 時可見上方有乙個選單欄。這個選單是rsd主框架的選單。開始乙個任務 暫時理解為開啟檔案 出現主視窗選單。各個選單項的功能和任務在後面章節將逐項介紹。很多情況下右擊滑鼠也會啟動一些彈出選單。rsd有許多浮動視窗,每個浮動視窗承擔一部分操作功能。右擊選單欄 工具條的空白區會出...

改造Emacs GDB除錯的多視窗布局

emacs支援多視窗的gdb除錯,要開啟gdb的多視窗模式只需要設定emacs全域性變數gdb many windows 為true。但預設的多視窗感覺並不夠用,沒有彙編視窗,在學習一些語言底層實現的時候有時還需要看看彙編和暫存器內容。研究emacs的gbd ui指令碼發現emacs的gdb多視窗布...