我們大家都知道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
參考資料來源於百度。屬於博主原創,轉載請注明出處
