QT 視窗設定成無邊框並實現拖動
阿新 • • 發佈:2019-02-03
根據需求需要把視窗設定成無邊框的。
因為不熟悉,網上也各種百度,都沒成功,最後發現使用一句話就搞定了。
setWindowFlags(Qt::FramelessWindowHint);
OK,這樣視窗是無邊框了,問題來了。我發現,不能拖動視窗了,它就死在那裡不動了。只能重寫一些函數了。
在標頭檔案中定義如下:
void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *event); QPoint mousePoint; //滑鼠拖動自定義標題欄時的座標 bool mousePressed; //滑鼠是否按下
然後在資原始檔中實現該函式:
void QUaFileShowDlg::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
mousePressed = true;
mousePoint = event->pos();
}
}
void QUaFileShowDlg::mouseReleaseEvent(QMouseEvent *)
{
mousePressed = false;
}
void QUaFileShowDlg::mouseMoveEvent(QMouseEvent *event)
{
if (mousePressed && (event->buttons() && Qt::LeftButton))
{
this->move(event->globalPos() - mousePoint);
event->accept();
}
}
這樣就可以實現拖動了。