在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);
    }
}

 

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