今天看了一个
void QWidget::setMask ( const QBitmap & bitmap )
这个方法;
//加载一幅有部分区域是透明的图片作为程序的界面
m_Pixmap.load(":/2.png");
resize( m_Pixmap.size() );
//不规则窗口的关键,将图片透明的地方设为穿透
setMask( m_Pixmap.mask() );
这样实现图片如果中间有透明的地方是没有窗口的。
如果自定义窗口,可以用以下的方法,这样可以实现自己定义的窗口
QBitmap objBitmap(size());
//QPainter用于在位图上绘画
QPainter painter(&objBitmap);
//填充位图矩形框(用白色填充)
painter.fillRect(rect(),Qt::white);
painter.setBrush(QColor(0,0,0));
//在位图上画圆角矩形(用黑色填充)
painter.drawRoundedRect(this->rect(),5,5);
//使用setmask过滤即可
setMask(objBitmap);