在Qt上实现无边框效果,窗口的移动和关闭

先直接上代码

setWindowFlags( Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint | windowFlags());
setAttribute(Qt::WA_TranslucentBackground);

第一个函数的第一个枚举数是表示置顶显示窗口,第二个是无边框显示,第三个是保留原来的窗口的一些标志。

第二个函数就是就是部件透明化。

刚好有个分形图的实现用到了这个,给你们看看效果:

另外将mouse的俩个event函数也放在这里,不然生成的无边框不方便移动和关闭,其中具体实现也挺简单的,具体看代码

void Widget::mousePressEvent(QMouseEvent *e)
{
    if(e->button() == Qt::LeftButton)
    {
        p = e->globalPos() - this->frameGeometry().topLeft();
    }
    if(e->button() == Qt::RightButton)
    {
        close();
    }
}
void Widget::mouseMoveEvent(QMouseEvent *e)
{
    if(e->buttons() & Qt::LeftButton)
    {
        move(e->globalPos() - p);
    }
}

 

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