Qt圓角窗體+半透明背景+右下角顯示(移除窗體標題欄+置頂+不在工作列顯示)
阿新 • • 發佈:2019-02-13
現在轉到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)); }