• <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 逛奔的蝸牛 閱讀(7648) 評論(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之外其他都有點不知所云。。  回復  更多評論
              

            久久综合中文字幕| 久久九九全国免费| 18禁黄久久久AAA片| 狼狼综合久久久久综合网| 久久精品国产亚洲av水果派 | 精品国产福利久久久| 久久国产乱子精品免费女| 久久亚洲AV永久无码精品| 亚洲午夜久久久久久久久电影网| 国产一久久香蕉国产线看观看 | 亚洲AV无码久久| 国产成人AV综合久久| 欧美黑人激情性久久| 久久午夜电影网| 伊人久久大香线蕉AV色婷婷色| 99久久免费国产精品| 囯产极品美女高潮无套久久久| 国产精品久久久天天影视香蕉 | 日本高清无卡码一区二区久久| 久久精品九九亚洲精品| 久久国产精品无| 色婷婷狠狠久久综合五月| 精品久久777| 国产成人久久AV免费| 亚洲精品乱码久久久久久按摩| 日本亚洲色大成网站WWW久久| 91精品日韩人妻无码久久不卡| 性高湖久久久久久久久| 久久婷婷午色综合夜啪| 久久亚洲av无码精品浪潮| 久久久青草久久久青草| 精品国产91久久久久久久| 国产午夜精品久久久久免费视 | 亚洲欧美一区二区三区久久| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久久亚洲欧洲日产国码二区| 精品久久久中文字幕人妻| 亚洲国产精品无码久久九九| 色偷偷91久久综合噜噜噜噜| 久久久久亚洲AV无码专区桃色| 久久人人爽人爽人人爽av|