Qt建立懸浮框(不停靠)

2021-09-26 15:26:00 字數 2252 閱讀 2658

/*

可能需要的標頭檔案:

#include "qlist.h"

#include "qmainwindow.h"

#include "qwidget.h"

#include "qdesktopwidget.h"

*/ widget =

newqwidget

(main_window)

;//new乙個widget類視窗,並指定父視窗

//設定視窗置頂顯示 無工具欄 無邊框,置頂時使用qt::dialog可以使視窗在當前軟體置頂而不會全域性置頂

//缺點:但視窗還是會被選單彈出的對話方塊蓋住

widget-

>

setwindowflags

(qt::dialog | qt::tool | qt::framelesswindowhint)

;//設定視窗透明度,控制項及視窗都會變透明

widget-

>

setwindowopacity

(0.8);

//下面兩種方式控制項透明度不會發生變化,但我在使用時有些小問題,可自行嘗試

//widget->setpalette(palette);

//widget->setattribute(qt::wa_translucentbackground, true);

//建立乙個label

qlabel *label =

newqlabel

("渲染圖例"

, widget)

; label-

>

setminimumsize

(100,35

);//設定最小大小

label-

>

setalignment

(qt::alignvcenter | qt::alignhcenter)

;//設定文字垂直水平居中

qfont font

("microsoft yahei",14

,75);

//設定字型 字型 大小 加粗(權重)

label-

>

setfont

(font)

; label_list.

push_back

(label)

; qvboxlayout *v_layout =

new qvboxlayout;

//垂直布局

vlayout.

push_back

(v_layout)

; v_layout-

>

addwidget

(label)

;for

(int i =

0; i < color.

length()

;i++)

widget-

>

setlayout

(v_layout)

;//給視窗新增布局

//獲取父視窗大小

qrect screenrect = main_window-

>

geometry()

;//獲得父類視窗得大小

int screenx = screenrect.

width()

;//父視窗得寬

int screeny = screenrect.

height()

;//父視窗得高

widget-

>

show()

;//要先show出來,才能獲得視窗得準確大小,否則獲取到得視窗大小不準確

int w = widget-

>

geometry()

.width()

;int h = widget-

>

geometry()

.height()

; widget-

>

move

(show_wide_scale*screenx-w, show_high_scale*screeny-h)

;/* 9月4日更新,在無意中發現,多次平凡呼叫時,在呼叫show之前設定背景顏色會出現失敗而不能設定成功的情況

具體原因我也不知道,但改為在呼叫show之後在設定背景顏色就不會失敗

int index = 0;

for (auto i = 1; i < g_labellist.length()-1;i=i+2)

*/

Qt建立停靠懸浮視窗

1.qt實現視窗停靠和懸浮使用類qdockwidget,它有兩個重要方法用來設定停靠特性以及停靠區域,dw1 setfeatures qdockwidget dockwidgetmovable qdockwidget dockwidgetclosable 設定停靠視窗特性,可移動,可關閉dw1 se...

Qt學習 建立對話方塊

第二章 建立對話方塊 總結筆記2.1子類化對話方塊 通過前向宣告,編譯器就知道這個類已經存在,而不用寫出包含的標頭檔案。2.2深入訊號和槽 signals and slots in depth 槽和普通的c 成員函式很像。它們可以是虛函式 virtual 也可被過載 overload 可以是公有的 ...

Qt學習之路 4 建立對話方塊

void mainwindow open void mainwindow open 不過,這樣做有乙個問題 如果我們的對話方塊不是在乙個介面類中出現呢?由於qwidget的 parent 必須是qwidget指標,那就限制了我們不能將乙個普通的 c 類指標傳給 qt 對話方塊。另外,如果對記憶體占用...