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

            国产精品久久久亚洲| 无码伊人66久久大杳蕉网站谷歌| aaa级精品久久久国产片| 久久国产高清字幕中文| 国产999精品久久久久久| 欧美久久综合九色综合| 久久精品久久久久观看99水蜜桃| 91精品国产色综合久久| 久久久久亚洲AV无码专区首JN| 亚洲午夜久久久| 97久久精品无码一区二区| 亚洲精品NV久久久久久久久久| 久久久久亚洲av综合波多野结衣| 久久激情亚洲精品无码?V| 国产综合久久久久| 久久久久久国产a免费观看黄色大片| 国内精品久久九九国产精品| 久久精品人妻中文系列| 老司机午夜网站国内精品久久久久久久久 | 亚洲成色WWW久久网站| 久久99精品久久久久久9蜜桃| 亚洲国产精品无码久久久蜜芽| 色综合久久天天综线观看| 好属妞这里只有精品久久| 无码日韩人妻精品久久蜜桃| 久久天天躁狠狠躁夜夜2020一| 久久一本综合| 久久天天日天天操综合伊人av| 中文字幕一区二区三区久久网站| 国产精品美女久久久m| 精品无码久久久久久午夜| 亚洲va久久久噜噜噜久久天堂| 一本一本久久A久久综合精品| 99久久综合国产精品免费| 久久综合九色欧美综合狠狠| 久久午夜福利电影| 久久天天日天天操综合伊人av| 亚洲国产成人久久精品99| 少妇久久久久久被弄到高潮 | 久久久久久伊人高潮影院| 久久久久高潮综合影院|