Có thể. Giả sử bạn đang tải PNG của bạn thành một QImage, bạn có thể làm một cái gì đó như thế này để tạo ra một mặt nạ từ hình ảnh của bạn:
QImage img("your.png");
QPixmap mask = QPixmap::fromImage(img.createAlphaMask());
Xem các khác để create*Mask
chức năng trong QImage giải pháp thay thế.
Sau đó, nó là một vấn đề đơn giản của thiết lập vùng clip của họa sĩ:
QPainter p(this);
p.setClipRegion(QRegion(mask));
Dưới đây là một bản demo ngu ngốc (không sử dụng mã như-là, tải hình ảnh, mặt nạ và tạo khu vực nên được lưu trữ, họ có khả năng đắt tiền):
#include <QtGui>
class W: public QWidget
{
Q_OBJECT
public:
W(): QWidget(0) { }
protected:
void paintEvent(QPaintEvent *)
{
QPainter p(this);
QImage img("../back.png");
QPixmap mask = QPixmap::fromImage(img.createAlphaMask());
// draw the original image on the right
p.drawImage(300, 0, img);
// draw some ellipses in the middle
p.setBrush(Qt::red);
for (int i=0; i<100; i+=10)
p.drawEllipse(i+150, i, 20, 70);
// and do the same thing, but with the mask active
p.setClipRegion(QRegion(mask));
for (int i=0; i<100; i+=10)
p.drawEllipse(i, i, 20, 70);
}
};
nào tạo ra một cái gì đó như thế này: 
Cảm ơn rất nhiều và +1 cho mã mẫu hữu ích . –