一、如何布局
布局,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)例3:乙個介面中可以使用多個布局器先橫向使用乙個再縱向使用乙個: qwidget(parent)
mywin::~mywin()
#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多視窗布...