2016-03-21 47 views
0

我正在Qt中使用QWindow對象。 一旦設置了無框標誌,窗口就會固定到其默認位置。 有沒有辦法找回設置此標誌時失去的可移動性。我已經嘗試了幾種不同的方法,但它們都需要似乎只能是QWidget的對象製作無框QWindow可移動

+0

那麼使用['QWindow :: setPosition'](http://doc.qt.io/qt-5/qwindow.html#setPosition)來代替? – thuga

+0

可移動性你的意思是,當它具有'Qt :: FramelessWindowHint'時通過鼠標移動?你是否意識到它可能取決於操作系統?在Linux上,我們通過按下LAlt + LMB來實現這種可移動性。在Windows上,這將是不同的故事。或者,也許你可以捕捉一些鼠標事件並以某種方式處理它,但乍看之下,我覺得它太複雜了。 – Radek

+0

感謝thuga。我想出瞭如何使用setPosition和mousePress以及mouseMove事件來移動窗口,但是當我嘗試使用mouseRelease時,沒有發現任何事件。仍然需要嘗試一些其他的事情,但再次感謝提示 – user3447816

回答

0

您可以從QWidget繼承和覆蓋mouseMoveEventmousePressEventmouseReleaseEvent移動()函數。跟蹤鼠標按鈕被按下時從頭到尾(中心或其他)到光標的距離;如果移動鼠標,移動它,如果按鈕仍然按下。

我會通過添加一個bool tracking成員變量和一個QPoint delta變量來跟蹤移動窗口的時間和距離。

您可以使用它來添加自定義樣式標題欄;從QWidget繼承並添加如上所述的所有修剪,並讓它移動它最遠的祖先(父母或父母,只要它不爲空)。