• <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无码专区喷水| 久久九九兔免费精品6| 91精品国产高清久久久久久io | 国产一区二区久久久| 久久亚洲国产最新网站| 亚洲午夜久久久久久久久久| 99精品国产在热久久无毒不卡| 91精品无码久久久久久五月天 | 一本一本久久a久久精品综合麻豆| 国产免费久久精品99re丫y| 国产精品9999久久久久| 久久精品国产99久久丝袜| 久久99精品国产麻豆宅宅| 精品综合久久久久久97超人 | 久久久久久久综合日本| 亚洲中文字幕久久精品无码喷水| 亚洲午夜精品久久久久久人妖| 深夜久久AAAAA级毛片免费看| 性高湖久久久久久久久| 国产精品免费久久久久电影网| 亚洲精品美女久久777777| 国产福利电影一区二区三区久久久久成人精品综合| 久久精品二区| 热99re久久国超精品首页| 久久亚洲春色中文字幕久久久| 久久综合视频网站| 久久精品国产免费一区| 精品久久久久久无码专区不卡| 亚洲午夜福利精品久久| 久久青青草原精品国产不卡| 成人久久综合网| 精品久久久噜噜噜久久久| 久久精品国产99久久久| 久久综合给久久狠狠97色| 97久久国产露脸精品国产| 97精品依人久久久大香线蕉97| 综合久久一区二区三区 | 久久久久久国产精品无码超碰| 偷窥少妇久久久久久久久| 亚洲欧美日韩久久精品| 欧美亚洲国产精品久久久久|