1.边框透明窗体可以实现,但是Halcon图像无法显示,
//设不设效果一样
//setAutoFillBackground(false);
//需要去掉标题栏
this->setWindowFlags(Qt::FramelessWindowHint);
this->setAttribute(Qt::WA_TranslucentBackground, true);
void BackGroundWidget::paintEvent(QPaintEvent * event)
{
QPainter painter(this);
painter.fillRect(this->rect(), QColor(0, 0, 0, 20)); //QColor最后一个参数80代表背景的透明度
}
2.这个方法,应该是透明的部分都是黑色填充
setAutoFillBackground(false); //这个设不设置都是黑色
QPalette pal = palette();
//pal.setColor(QPalette::Background, QColor(0x00, 0xff, 0x00, 0x00));
pal.setColor(QPalette::Background, Qt::transparent);
//pal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));
//pal.setColor (QPalette::Foreground, QColor (255,255,255,255));
setPalette(pal);
3.这个方法压根没有填充效果,而且Halcon图像没有
setAutoFillBackground(false); //这个不设置的话就背景变黑
QPalette pal = palette();
pal.setColor(QPalette::Background, Qt::transparent);
setPalette(pal);
//配合onpaint可以实现透明窗体,但是无法显示Halcon图像
//setAutoFillBackground(false); //这个不设置的话就背景变黑
this->setWindowFlags(Qt::FramelessWindowHint);//需要去掉标题栏
this->setAttribute(Qt::WA_TranslucentBackground, true);
4.这个方法窗体和子控件都会透明显示
//setWindowOpacity(0.1);