• <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精品国产自在现线小黄鸭 | 久久高清一级毛片| 思思久久99热免费精品6| 精品人妻伦九区久久AAA片69| 欧美黑人激情性久久| 久久er国产精品免费观看8| 久久精品免费一区二区| 99久久婷婷免费国产综合精品| 久久99久久成人免费播放| 午夜精品久久久久久久| 久久夜色精品国产| 99久久综合狠狠综合久久| 亚洲国产一成人久久精品| 久久青青草原精品国产不卡| 国产精品久久久久久福利漫画| 亚洲午夜久久久| 2020最新久久久视精品爱| 久久一日本道色综合久久| 中文字幕精品无码久久久久久3D日动漫| 99久久国产热无码精品免费| 亚洲午夜久久久影院| 伊人 久久 精品| 亚洲国产成人久久一区久久| 狠狠久久综合| 国产精品熟女福利久久AV| 精品亚洲综合久久中文字幕| 国产午夜精品久久久久免费视 | 精品久久久久久亚洲| 精品国产VA久久久久久久冰| 无码人妻少妇久久中文字幕蜜桃| 亚洲欧美久久久久9999 | 久久久久亚洲av成人无码电影| 久久中文字幕一区二区| 情人伊人久久综合亚洲| 久久国产欧美日韩精品| 国产美女久久久|