• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            逛奔的蝸牛

            我不聰明,但我會很努力

               ::  :: 新隨筆 ::  ::  :: 管理 ::
            關鍵是使用
            void QWidget::setMask ( const QBitmap & bitmap )
            void QWidget::setMask ( const QRegion & region )
            void QWidget::setMask ( const QRegion & region )
            
            Causes only the parts of the widget which overlap region to be visible. 
            只有widget與region重疊的地方才會顯示出來. 自己構造一個QRegion就行了.
            void ShapedClock::resizeEvent(QResizeEvent * /* event */) {
                int side = qMin(width(), height());
                QRegion maskedRegion(width() / 2 - side / 2, height() / 2 - side / 2, side,
                                     side, QRegion::Ellipse);
                setMask(maskedRegion);
            }

            void QWidget::setMask ( const QBitmap & bitmap )
            Causes only the pixels of the widget for which bitmap has a corresponding 1 bit to be visible. If the region includes pixels outside the rect() of the widget, window system controls in that area may or may not be visible, depending on the platform.
            只有在bitmap中像素數據是1的地方才會顯示出widget的相應像素來. Bitmap就是像素數據只有兩個值: 0和1 (1 bit-depth, monochrome).
                 QLabel topLevelLabel;
                 QPixmap pixmap(":/images/tux.png");
                 topLevelLabel.setPixmap(pixmap);
                 topLevelLabel.setMask(pixmap.mask()); // 可以不使用轉換的, 使用一張專門的bitmap圖片.
            上面的這些方式用一普通的QWidget就可以了. 當然, 對于窗口而言, 很多時候我們要把它的標題欄去掉:
            widget->setWindowFlags(Qt::FramelessWindowHint);


            但是對于不規則的QPushButton就有些特殊, 要使用QIcon來處理:
            button->setIcon(QIcon("xxx.png"));
            button->setIconSize(w, h);
            button->setMask(maskBitmap/*maskedRegion*/);
            button->setFixedSize(w, h); // 這個當然最好使用它的icon的大小.
            posted on 2009-05-24 17:13 逛奔的蝸牛 閱讀(7663) 評論(3)  編輯 收藏 引用 所屬分類: Qt自定義Widget

            評論

            # re: QtWidget: 自定義不規則窗體與按鈕 2009-07-21 17:03 QT初學者
            button->setMask(maskBitmap/*maskedRegion*/);
            這句話能否講解一下?
            maskBitmap是什么類型,從何而來?setMask()函數的作用是什么?謝謝哈。  回復  更多評論
              

            # re: QtWidget: 自定義不規則窗體與按鈕 2010-04-15 19:59 喃喃
            是這樣的,不錯  回復  更多評論
              

            # re: QtWidget: 自定義不規則窗體與按鈕 2011-08-09 13:08 QT菜鳥
            寫的好粗略。。除了得知應該用到QRegion之外其他都有點不知所云。。  回復  更多評論
              

            久久久亚洲欧洲日产国码是AV| 99久久99久久久精品齐齐| 国内精品久久久久久久影视麻豆| 亚洲国产精久久久久久久| 久久国产福利免费| 精品国产乱码久久久久软件| 久久精品欧美日韩精品| 狠狠精品干练久久久无码中文字幕 | 日韩久久无码免费毛片软件| 日产精品久久久久久久性色| 久久久久无码国产精品不卡| 国产精品久久精品| 亚洲欧洲中文日韩久久AV乱码| 久久久国产精品福利免费 | 无码久久精品国产亚洲Av影片| 久久久久国产精品麻豆AR影院 | 2021国产精品久久精品| 99久久成人18免费网站| 久久精品国产AV一区二区三区| 久久精品国产福利国产秒| 99久久人妻无码精品系列蜜桃| 国产精品99久久久久久宅男小说 | 无码人妻久久一区二区三区蜜桃| 久久精品毛片免费观看| 久久天天躁狠狠躁夜夜不卡| 青青草原综合久久大伊人导航| 99精品国产在热久久无毒不卡| 久久久久久久久久久久久久| 久久久久国色AV免费观看| 91久久精品国产成人久久| 久久电影网2021| 97久久国产亚洲精品超碰热| 久久久久亚洲精品天堂| 国内精品久久人妻互换| 久久久久久久亚洲Av无码| 亚洲国产精品无码久久久秋霞2| 亚洲一区精品伊人久久伊人| 国产精品久久久久久久久久影院| 久久人人爽人人人人爽AV | 久久最新精品国产| 久久播电影网|