第二章 Qt窗體應用------移動無邊框窗體

1、 實例需求
移動無邊框窗體。
2、 實例實現
第一步:打開mainwindow.h頭文件,添加代碼。
<1> 添加頭文件:

#include <QMouseEvent>  //引用鼠標類頭文件
#include <QPushButton>  //引用按鈕類頭文件

<2> 添加變量和聲明:

//定義鼠標三種狀態方法
protected:
    //鼠標按下
    void mousePressEvent (QMouseEvent *e);
    //鼠標移動
    void mouseMoveEvent (QMouseEvent *e);
    //鼠標釋放
    void mouseReleaseEvent (QMouseEvent *e);
    //定義QPoint對象
private:
    QPushButton *btClose;
    QPoint last;

第二步:打開mainwindow.cpp源代碼文件,添加代碼。
<1> 在MainWindow的構造函數中添加如下代碼:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //標題名
    this->setWindowTitle("移動無邊框窗體");
    //去掉標題欄
    this->setWindowFlags(Qt::FramelessWindowHint);
    //實例一個按鈕控件,因爲去掉標題欄後,窗體沒有關閉按鈕了。
    //所以自己添加一個按鈕實現關閉功能。
    btClose = new QPushButton(this); btClose->setText("關閉");
    //按鈕點擊事件
    connect(btClose,SIGNAL(clicked()),this,SLOT(close()));

}

<2> 實現函數:

//獲取鼠標點定位窗體位置
void MainWindow::mousePressEvent(QMouseEvent *e)
{
    last = e->globalPos();
}
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
    int dx = e->globalX() - last.x();
    int dy = e->globalY() - last.y();
    last = e->globalPos();
    move(x()+dx,y()+dy);
}
void MainWindow::mouseReleaseEvent(QMouseEvent *e)
{
    int dx = e->globalX() - last.x();
    int dy = e->globalY() - last.y();
    move(x()+dx, y()+dy);
}

3、 效果圖
這裏寫圖片描述
今天講解到現在結束了,想進行視頻學習的小夥伴,可以進入我的視頻教程進行學習,課程地址:https://edu.csdn.net/course/detail/7275,課程資源下載地址:https://download.csdn.net/download/xuan_xuan_2/10641564,歡迎大家前來學習交流。
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章