• <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之外其他都有點不知所云。。  回復  更多評論
              

            日产精品99久久久久久| 久久久久人妻一区精品性色av| 国产精品99精品久久免费| 亚洲AV乱码久久精品蜜桃| 亚洲va久久久噜噜噜久久狠狠 | 久久精品国产2020| 久久精品国产99国产精偷| 久久夜色精品国产亚洲av| 久久人人爽人人爽人人片av麻烦 | 久久人人爽人人精品视频| 久久久无码精品亚洲日韩京东传媒| 久久精品亚洲精品国产色婷| 国产精品成人99久久久久| 亚洲精品乱码久久久久久久久久久久| 热99re久久国超精品首页| 久久久久久精品免费看SSS| 国产成人精品久久一区二区三区av| 色狠狠久久综合网| 久久九九有精品国产23百花影院| 久久夜色精品国产噜噜亚洲a| 日韩亚洲欧美久久久www综合网| 狠狠色丁香久久婷婷综合_中| 成人午夜精品久久久久久久小说| 日本久久久久亚洲中字幕| 日韩欧美亚洲国产精品字幕久久久 | 男女久久久国产一区二区三区| 久久青青国产| 成人精品一区二区久久| 日韩精品久久无码人妻中文字幕| 久久久久久久久久久| 欧美亚洲另类久久综合婷婷| 久久久久国产精品嫩草影院| 国产福利电影一区二区三区久久老子无码午夜伦不 | 久久国产精品99久久久久久老狼 | 国产69精品久久久久观看软件 | 人人狠狠综合久久88成人| 亚洲欧美伊人久久综合一区二区| 伊人久久无码精品中文字幕| 久久精品无码一区二区三区日韩| 88久久精品无码一区二区毛片| 精品久久久久久久|