QT实现无边框的可移动窗体

无边框窗体不可移动窗口

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
    Widget w;

    //w.setWindowOpacity(1);
    w.setWindowFlags(Qt::FramelessWindowHint);  //这个是widget的标题栏和边框去掉
    //w.setAttribute(Qt::WA_TranslucentBackground);  //这个是widget的背景弄透明

    w.show();
    return a.exec();
}


在相应的界面类中添加2个鼠标事件函数,实现窗口移动效果

首先在.h文件中添加3个保存坐标的变量,然后添加下面的代码就可以实现移动了

QPoint  windowPos,mousePos,dPos;

void Widget::mousePressEvent(QMouseEvent *event)
{
        this->windowPos = this->pos();
        this->mousePos = event->globalPos();
        this->dPos = mousePos - windowPos;

}
void Widget::mouseMoveEvent(QMouseEvent *event)
{
        this->move(event->globalPos() - this->dPos);
}


拿个测试的软件看看有边框框效果图

QT实现无边框的可移动窗体_第1张图片

去除边框后的效果,是不是看上去漂亮多了

QT实现无边框的可移动窗体_第2张图片





你可能感兴趣的:(QT)