我想在我的QT應用程序中有一個帶有圖標圖像形狀的按鈕。我試圖通過使用Alpha通道從使用的圖像(.png)中獲取蒙版來設置按鈕蒙版。Set Qt Widget mask
這裏有興趣的代碼行:
QPushButton button();
QPixmap pixmap("image_path.png");
QIcon icon(pixmap);
button.setIcon(icon);
button.setMask(pixmap.createMaskFromColor(Qt::transparent,Qt::MaskInColor));
結果是按鈕消失!
通過做一些測試,我敢肯定,該掩模是正確創建的,錯誤在哪裏?
這是你正在使用的確切代碼?上面的代碼片斷表明你正在堆棧上創建'QPushButton'(如果你不想在引用超出範圍之後立即刪除它,你需要將它關閉)。你也沒有爲你的按鈕指定一個父'QWidget'。 – sjwarner 2012-08-07 14:23:51
嗨sjwarner,謝謝你的回覆! 我寫的代碼並不完全是我在我的應用程序中使用的代碼,其中按鈕是在定義爲類的私有成員的QPushButton指針中創建的,我只是在這裏寫了這些行來報告問題。然而,在這種情況下,儘管按鈕,像素圖和圖標全部分配在堆棧中,但它們不應該立即被破壞,而應當在示波器的出口處... – 2012-08-08 08:25:28
我剛剛嘗試使用.png圓形更改按鈕圖片透明背景上的紅色形狀,我得到了一個非常奇怪的三角形面具,所以我認爲這個問題不在代碼上,而是在函數crateMask()如何工作。 有沒有其他方法可以獲得自定義形狀的按鈕?我發現只有其他的例子使用createMask()和createEhuristicMask()函數,但這第二個不適用於我的應用程序... – 2012-08-08 08:26:32