Qt QSplitter任意拆分視窗

2022-07-29 10:36:12 字數 4365 閱讀 4279

qt拆分視窗可以使用qsplitter,也可以使用比較容易使用布局控制項來完成,本文章給出使用qsplitter分割視窗的例子。

qsplitter 繼承自qframe,而qframe又繼承自qwidget,這點很重要。

對於使用qsplitter拆分視窗:

新建乙個qsplitter,就意味著新建了乙個qwidget

不同的qsplitter物件通過指定父子關係來完成巢狀(劃分視窗)

qsplitter可以放置到你指定的任何視窗內

樣例1

核心**如下:

qdebug

("mainframe start...\n");

qsplitter *pspliter =

newqsplitter

(qt::horizontal)

;//此注釋指定父視窗,開啟後,後面的pspliter->addwidget(pleftedt); 可以注釋掉

//qtextedit* pleftedt = new qtextedit(pspliter);

qtextedit* pleftedt =

new qtextedit;

pleftedt-

>

settext

(qobject::tr(

"leftwindow"))

;//此注釋指定父視窗,開啟後,後面的pspliter->addwidget(prightedt); 可以注釋掉

//qtextedit* prightedt = new qtextedit(pspliter);

qtextedit* prightedt =

new qtextedit;

prightedt-

>

settext

(qobject::tr(

"rightwindow"))

;pspliter-

>

addwidget

(pleftedt)

;pspliter-

>

addwidget

(prightedt)

;pspliter-

>

setstretchfactor(0

,1);

//下面兩句設定左右兩列的寬度比為1:4

pspliter-

>

setstretchfactor(1

,4);

pspliter-

>

setwindowtitle

(qobject::tr(

"split-wnd demo1"))

;pspliter-

>

show()

;

需要新增的標頭檔案如下:

#include

#include

樣例2

核心**如下:

qdebug

("mainframe start...\n");

qsplitter *pspliter =

newqsplitter

(qt::horizontal)

;qtextedit* pleftedt =

newqtextedit

(pspliter)

;pleftedt-

>

settext

(qobject::tr(

"leftwindow"))

;qsplitter *prightspliter =

newqsplitter

(qt::vertical, pspliter)

;qtextedit* prighttopedt =

newqtextedit

(prightspliter)

;prighttopedt-

>

settext

(qobject::tr(

"right top window"))

;qtextedit* prightbtmedt =

newqtextedit

(prightspliter)

;prightbtmedt-

>

settext

(qobject::tr(

"left bottom window"))

;// 設定左右比為1:4

pspliter-

>

setstretchfactor(0

,1);

pspliter-

>

setstretchfactor(1

,4);

prightspliter-

>

setstretchfactor(0

,1);

//右面視窗上下視窗高度比為1:4

prightspliter-

>

setstretchfactor(1

,4);

pspliter-

>

setwindowtitle

(qobject::tr(

"split-wnd demo2"))

;pspliter-

>

show()

;

需要新增的標頭檔案如下:

#include

#include

樣列3

核心**:

qdebug

("mainframe start...\n");

// 1. 設定乙個總的splitter

qsplitter *pspliter =

newqsplitter

(qt::horizontal)

;//2. 設定 左邊的splitter

qsplitter *pleftspliter =

newqsplitter

(qt::vertical)

;qtextedit* plefttopedt =

newqtextedit

(pleftspliter)

;plefttopedt-

>

settext

(qobject::tr(

"left top window"))

;qtextedit* pleftbtmedt =

newqtextedit

(pleftspliter)

;pleftbtmedt-

>

settext

(qobject::tr(

"left bottom window"))

;//3. 設定右邊的東西wiget

qtextedit* prightedt =

new qtextedit;

prightedt-

>

settext

(qobject::tr(

"left window"))

;//4. 左右的wiget加入總的splitter

pspliter-

>

addwidget

(pleftspliter)

;pspliter-

>

addwidget

(prightedt)

;// 其他設定

pspliter-

>

setstretchfactor(0

,4);

pspliter-

>

setstretchfactor(1

,1);

//左右寬度比為4:1

pleftspliter-

>

setstretchfactor(0

,4);

//左面視窗上下視窗高度比為4:1

pleftspliter-

>

setstretchfactor(1

,1);

pspliter-

>

setwindowtitle

(qobject::tr(

"split-wnd demo3"))

;pspliter-

>

show()

;

需要新增的標頭檔案如下:

#include

#include

Python 拆分任意長度的可迭代物件

python作為現在主流的程式語言,有很多使用特性,比如今天要分享的可迭代物件的拆分。1.定長可迭代物件 首先,對於固定長度或已知長度的可迭代物件 包括但不限於元組 列表 字串等 可以通過複製給相同個數的變數即可 input tup a 2 x,y tup print x x print y y o...

根據指定字符集拆分任意字串

題目真不知道怎麼寫。我經常自己做一些小工具,所以並沒啥系統的東西可寫,這也並不是我想寫系統的東西,而且看別人寫的高大上的東西我也一點都不羨慕,真的 具體是這樣,有乙個列表,裡面存放的是一些不重複的字元,假定這些字元就是我需要找出的,或者說在我這個工具中,我需要在乙個任意字串中分別找出字元列表中有的和...

資料拆分之 垂直拆分 and 水平拆分

對資料進行拆分了。有垂直和水平兩種。垂直拆分比較簡單,也就是本來乙個資料庫,資料量大之後,從業務角度進行拆分多個庫。如下圖,獨立的拆分出訂單庫和使用者庫。水平拆分的概念,是同乙個業務資料量大之後,進行水平拆分。分庫分表方案 分庫分表方案最主要就是路由演算法,把路由的key按照指定的演算法進行路由存放...