1. 程式人生 > >QT 視窗設定成無邊框並實現拖動

QT 視窗設定成無邊框並實現拖動

根據需求需要把視窗設定成無邊框的。
因為不熟悉,網上也各種百度,都沒成功,最後發現使用一句話就搞定了。
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();
}

這樣就可以實現拖動了。