回覆列表
  • 1 # 使用者1415810019352

      1.可以設定QWidget的視窗屬性Qt::WA_TranslucentBackground為true來實現。但是利用這個屬性有很大的限制。在window平臺下,你必須設定Qt::FramelessWindowHint屬性為true,設定視窗為一個沒有標題欄的視窗。在X11平臺下,你還要依靠 a compositing window manager.侷限很多   2利用setMask()函式來實現,   void QWidget::setMask ( const QRegion & region ) 可以使得僅和region重疊的區域可見。但是,如果這個區域包括widget的rect()以外的畫素,視窗控制的這個區域可見不可見,將取決於具體的平臺。   所以,如果獲得這個不規則的區域,然後在resizeEvent函式中呼叫這個函式,就可以獲得一個不規則的形狀的視窗。      下面的程式碼是如何使得視窗成為一個圓角矩形。   void resizeEvent(QEvent* event)   {   QPainterPath path;   QRectF rect = QRectF(0,0,200,100);   path.addRoundedRect(rect,20,15);      QPolygon polygon= path.toFillPolygon().toPolygon();//獲得這個路徑上的所有的點 QRegion region(polygon);//根據這個點構造這個區域 setMask(region);   }   由於QPainterPath可以構造很多不規則的形狀,所以我們可以構造很多不規則形狀的視窗

  • 中秋節和大豐收的關聯?
  • 郵箱註冊常見格式有哪些?怎麼挑選註冊郵箱好呢?