qt子視窗跟隨主視窗進行移動(放大和縮小也實現)

2021-10-14 06:05:30 字數 1519 閱讀 9208

子視窗跟隨主視窗進行移動,需要獲取子視窗相對于父視窗的位置。然後在mousemove 的時候,始終獲取相對位置,然後移動子視窗即可。

**:.h

protected

:void

resizeevent

(qresizeevent *e)

;void

mousepressevent

(qmouseevent *event)

;void

mousemoveevent

(qmouseevent *event)

;void

mousereleaseevent

(qmouseevent *event)

;

.cpp

//-----------初始化子視窗

qpoint pos =

maptoparent

(m_pwebengineview-

>

pos())

;int width = m_pwebengineview-

>

width()

; pos.

setx

(pos.x(

)+ width -

200)

; pos.

sety

(pos.y(

)); testwgt =

newqdialog

(this);

testwgt-

>

setwindowopacity

(0.7);

testwgt-

>

move

(pos)

; testwgt-

>

setfixedsize

(200

,400);

testwgt-

>

show()

;this

->

showmaximized()

;//預設最大化窗體

//------------------

void mainwindow::

mousepressevent

(qmouseevent * event)

}void mainwindow::

mousemoveevent

(qmouseevent * event)}}

void mainwindow::

mousereleaseevent

(qmouseevent * event)

但是放大和縮小窗體就又是乙個不同的概念,如果放大和縮小再去獲取子視窗相對于父視窗的位置,那就不對了,這個時候我們需要獲取子視窗相對於螢幕的位置。

**:

void mainwindow::

resizeevent

(qresizeevent * e)

執行效果:

ヾ( ̄▽ ̄)byebye

QT 主視窗大小改變,子視窗大小不能跟隨變化

開始使用qt,在mainwindow中動態新增乙個widget的子視窗,想主視窗大小改變的時候,比如最大化。結果子視窗的大小不能改變。從網上查詢資料,說主視窗需要過載 protected virtual void resizeevent qresizeevent event override 然後我...

Qt控制項大小跟隨視窗調整

來自qq群 linux 技術分享 311078264 通過qt creator的設計模式實現,無需增加 如下圖,實現對最下層tableview大小跟隨視窗調整 1 介面空白處右擊,選擇布局 柵格布局,這會使centralwidget布局設定為gridlayout。然後介面中的部件會自動新增到柵格布局...

主視窗中處理模態子視窗的狀態

做的專案,主視窗顯示乙個介面,然後再建立幾個非模態視窗顯示,如果使用者按鍵盤的乙個cancel鍵,系統會給主視窗傳送乙個訊息,主視窗需要處理這個訊息,關閉當前的非模態子視窗,然後顯示上乙個子視窗,在主視窗的pretranslatemessage中捕獲到了這個訊息,然後呼叫下面的模組進行了處理 定義了...