• <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麻豆蜜芽 | 久久久精品人妻一区二区三区蜜桃| 精品国产一区二区三区久久蜜臀| 伊人久久综在合线亚洲2019| 国产精品日韩深夜福利久久| 日韩久久久久中文字幕人妻| 国产亚洲精品久久久久秋霞| 国产99精品久久| 欧美久久亚洲精品| 久久精品国产亚洲AV无码娇色 | 久久精品国产99国产精品亚洲| 久久久久亚洲AV片无码下载蜜桃| 91久久香蕉国产熟女线看| 一级a性色生活片久久无| 996久久国产精品线观看| 亚洲午夜精品久久久久久浪潮| 97r久久精品国产99国产精| 日日狠狠久久偷偷色综合免费 | 无码久久精品国产亚洲Av影片| 国产精品久久久天天影视香蕉 | 久久www免费人成看国产片| 国产成人综合久久精品红| 91精品国产91久久久久久蜜臀| 亚洲乱码精品久久久久.. | 久久久久亚洲AV无码麻豆| 深夜久久AAAAA级毛片免费看 | 久久人人爽人人精品视频| 久久久久AV综合网成人| 国产精品久久久久久久久软件| 99久久国产综合精品五月天喷水| 久久久久亚洲精品无码蜜桃| 久久夜色精品国产亚洲| 中文字幕精品久久| 亚洲国产成人乱码精品女人久久久不卡| A狠狠久久蜜臀婷色中文网| 亚洲AV无码久久| 狠狠色婷婷久久一区二区| 久久精品卫校国产小美女| 久久亚洲sm情趣捆绑调教| 亚洲欧洲久久av| 精品熟女少妇AV免费久久|