qt 5 小練習 創建無邊框界面


       我們大家都知道QT5 自帶的界面不是那么美觀,並且每個軟件我們都發現他們的邊框是自定義的,所以我決定寫一篇這樣的博文,也許已經有許許多多篇大牛寫的論文了,但我還是想寫一篇記錄自己的學習QT的歷程

 

首先,我們得在相應的構造函數中寫入無邊框的代碼(例如博主想要mywidget變為無邊框)

setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);  

//設置邊框狀態,沒邊框之后,必須要自己寫一個鼠標事件來拖動它

setMouseTracking(true); //打開鼠標跟蹤事件

 

我們要有三個函數,press,Release,以及move,還要有bool press; 判斷是否按了鼠標,以及QPoint start_pos;記錄起始位置,QPoint end_pos;記錄終點位置,而他們的差值就是我們要移動多遠。例如起始位置是(0,0)終點位置是(200,300),那我們的無邊框的界面就移動(200,300)個單位。最重要的事,必須初始化press=flase;因為你剛開始沒按鼠標。


void mywidget::mousePressEvent(QMouseEvent *e)
{
press = true;
start_pos=e->pos();
}
void mywidget::mouseMoveEvent(QMouseEvent *e)
{
if(press)
{
QPoint end_pos = e->globalpos();
//在移動的過程中,坐標一直在變,只有當鼠標松開的時候,press變為false,坐標確定,開始移動窗口
this->move(end_pos-start_pos);
}
}
void mywidget::mouseReleaseEvent(QMouseEvent *)
{
press=false; //用來結束mouseMoveEvent中的坐標變化,確定終點坐標
}

    作者:Ten10

   參考資料來源於百度。屬於博主原創,轉載請注明出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM