qtフォームのデフォルト機能とフォームのマウスドラッグの実現をキャンセルします。

1. qtフォームのデフォルト機能(ズーム、最小化、ウィンドウを閉じる、マウスでフォームをドラッグするなど)をキャンセルします。

setWindowFlags(Qt::FramelessWindowHint);

次に、マウスをクリックしてフォームをドラッグすることを認識します。

1. 次のコードを *.h ファイルに追加します。

//头文件加入以下代码
#include <QMouseEvent>

//主体中加入以下代码
private:
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    QPoint diff_pos;     //鼠标点击时相对窗体左上角的位移
    QPoint mouse_pos;    //鼠标点击时的位置
    QPoint window_pos;   //窗体左上角的位置

2. 次のコードを *.cpp ファイルに追加します。

void 类名::mousePressEvent(QMouseEvent *event){
    
    
    mouse_pos=event->globalPos(); //获取鼠标点击时的绝对位置
    window_pos = this->pos();     //获取窗体的位置
    diff_pos=mouse_pos-window_pos;//计算相对位移
}

void 类名::mouseMoveEvent(QMouseEvent *event){
    
    
    QPoint pos = event->globalPos(); //获取鼠标移动后的绝对位置
    this->move(pos-diff_pos);        //设置窗体移动到的位置
}

おすすめ

転載: blog.csdn.net/Xiao_fan98/article/details/128648796