QT取消标题栏,如何实现窗口移动

简介: QT取消标题栏,如何实现窗口移动

qt自带的标题栏在多个平台都显示的不一样,而且在常用的window平台也非常的不好看,所以我们经常会用到的美化方式就是会取消标题栏的显示,但是取消标题栏的显示就会出现一个问题就是无法实现窗口的移动,所以这里给出一个方法实现左键按压窗口控件任意地方来实现窗口的移动,下面我们直接看代码和使用方法即可。

// 窗体移动方法重载eventFilter函数
bool Widget::eventFilter(QObject *watched, QEvent *evt)
{
    static QPoint mousePoint;
    static bool mousePressed = false;
    QMouseEvent *event = static_cast<QMouseEvent *>(evt);
    if (event->type() == QEvent::MouseButtonPress) {
        if (event->button() == Qt::LeftButton) {
            mousePressed = true;  // 左击事件跟随鼠标移动窗口位置
            mousePoint = event->globalPos() - this->pos();
            return true;
        } else {
//            exit(0);// 右击事件直接退出程序
        }
    } else if (event->type() == QEvent::MouseButtonRelease) {
        mousePressed = false;
        return true;
    } else if (event->type() == QEvent::MouseMove) {
        if (mousePressed && (event->buttons() && Qt::LeftButton)) {
            this->move(event->globalPos() - mousePoint);
            return true;
        }
    }
    return QWidget::eventFilter(watched, event);
}

使用方法:将最大的窗口重载上我们写的方法上面就可以了

this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint);//取消标题栏的显示
ui->tabWidget->installEventFilter(this);// 重载主窗口控件的eventfilter方法来实现移动。


相关文章
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
790 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
4月前
|
C++ Windows
Qt 窗口置顶
Qt 窗口置顶
128 1
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
880 4
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
321 3
|
4月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
104 3
|
4月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 颜色对话框QColorDialog
665 3
|
4月前
【qt】视口和窗口坐标
【qt】视口和窗口坐标
38 0
|
4月前
|
算法 数据安全/隐私保护
【qt】启动窗口的玩法
【qt】启动窗口的玩法
35 0
|
4月前
【qt】多窗口开发
【qt】多窗口开发
70 0