在qt的窗體中,當顯示的內容比窗體大時,一般會自動出現水平和垂直的滾動條,拖動滾動條就可以使窗體中的內容移動了。但是有時候按照需求當窗體內容比窗體大時,不可以顯示滾動條,要用滑鼠拖動窗體來移動窗體中的內容。
首先關閉水平和垂直方向上的滾動條
sethorizontalscrollbarpolicy(qt::scrollbaralwaysoff);//關閉滾動條
setverticalscrollbarpolicy(qt::scrollbaralwaysoff);
其次建立水平和垂直方向上的滾動條並用窗體中獲取滾動條的函式來初始化
qscrollbar *vscrollbar=verticalscrollbar();
qscrollbar *hscrollbar=horizontalscrollbar();
下一步,獲取滑鼠事件,並在滑鼠事件中計算出滑鼠移動的距離,水平方向上用xvalue表示,垂直方向上用yvalue表示,之後來設定兩個滾動條的位置
vscrollbar->setvalue(vscrollbar->value()+yvalue);
hscrollbar->setvalue(hscrollbar->value()+xvalue);
這樣即可通過拖動滑鼠來移動窗體中的內容了
Qt 支援滑鼠拖動來移動內容的視窗
最近有個qt的專案碰到問題,問題是這樣的 要使qt的視窗內容支援drag移動,即按住滑鼠左鍵在視窗裡移動時,視窗的滾動條和內容隨著滑鼠的移動而移動。實現的方法實現乙個類,此類派生自qscrollarea,安裝事件過濾器,對滑鼠的事件進行處理來實現內容的移動。如下 標頭檔案 include class...
Qt 圓角控制項,圓角窗體,滑鼠拖動窗體
1.設定圓角控制項 connectpb setstylesheet border 2px groove gray border radius 10px padding 2px 4px 設定圓角按鍵 2.設定圓角窗體 setwindowflags qt framelesswindowhint qbit...
Qt 中 實現窗體拖動
實現窗體拖動 如果我們不使用作業系統自帶的標題欄,首先就應該將windows標題欄去掉,這個功能只要一條語句就能夠實現,那就是在建構函式中加入 setwindowsflags qt framelesshint 但是窗體就固定不動了,既不能拖動也不能拉伸,下面我就介紹一種方法來實現窗體的拖動。1.在類...