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

            亚洲欧美久久久久9999| 无码专区久久综合久中文字幕 | av无码久久久久不卡免费网站| 91精品国产综合久久久久久| 香蕉aa三级久久毛片| 国产成人无码精品久久久久免费 | 久久久久成人精品无码中文字幕| 伊人久久综在合线亚洲2019| 久久久久久久久无码精品亚洲日韩 | 国产精品久久永久免费| 精品人妻伦一二三区久久| 人妻少妇久久中文字幕一区二区| 无码任你躁久久久久久| 99久久99久久精品免费看蜜桃| 91麻精品国产91久久久久| 久久99国内精品自在现线| 亚洲欧美成人久久综合中文网| 亚洲国产精品久久66| 熟妇人妻久久中文字幕| 亚洲精品97久久中文字幕无码| 久久精品国产91久久综合麻豆自制| 久久精品国产亚洲AV无码娇色| 中文字幕久久亚洲一区| 久久播电影网| Xx性欧美肥妇精品久久久久久| 午夜欧美精品久久久久久久| 思思久久99热只有频精品66| 伊人久久综合成人网| 91精品国产高清久久久久久io| 久久精品国产清自在天天线 | 国产精品99久久久久久人| 精品伊人久久久| 日韩久久久久中文字幕人妻| 国产高潮国产高潮久久久91 | 天天综合久久一二三区| 久久精品成人免费国产片小草| 久久综合精品国产一区二区三区| 久久天天躁狠狠躁夜夜不卡 | 久久久久久夜精品精品免费啦| 久久精品综合网| 99国产欧美精品久久久蜜芽|