1. 程式人生 > >Qt圓角窗體+半透明背景+右下角顯示(移除窗體標題欄+置頂+不在工作列顯示)

Qt圓角窗體+半透明背景+右下角顯示(移除窗體標題欄+置頂+不在工作列顯示)

現在轉到Qt這塊,很多東西使用起來確實像是到了另一個世界,特別是一些錯誤起初讓人百思不得其解,比如bool型別的全域性變數,你如果不先給它初始化一下,後面會出現一些非常莫名其妙的問題,別想當然的認為bool值預設就是false

最近剛好用到了如何對窗體設定圓角,如何設定透明背景,注意這邊的透明隻影響到窗體的背景,不影響窗體上的控制元件,還有如何讓窗體在螢幕右下角顯示,在此做個記錄以備後用

    setWindowFlags (Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
    setAttribute(Qt::WA_TranslucentBackground);
    ui->btnBar->setFlat(true);
    ui->btnPie->setFlat(true);

    // 獲取螢幕尺寸
    QDesktopWidget* desktop = QApplication::desktop();
    QRect deskRect = desktop->availableGeometry();
    //移到右下角顯示
    move(deskRect.width() - this->width(), deskRect.height() - this->height());

上面這段程式碼放在建構函式中,其中Qt::Tool表示不在工作列中顯示,後面兩個是去掉窗體標題欄以及置頂顯示

setFlag(true)去掉按鈕邊框。

下面這段paintEvent則寫出瞭如何對窗體進行圓角及半透明背景設定,其實也很簡單 :)

void ****::paintEvent(QPaintEvent *)
{
    QPainter painter(this);

    QPainterPath path;
    path.addRoundRect(this->rect(), 5); //圓角設定
    //半透明背景
    painter.fillPath(path, QColor(92, 155, 203, 100));
}