Qt中设置背景图,防止平铺

Qt中设置控件背景图防止平铺

  • 错误设置背景图
  • 正确设置背景图
  • 思考

错误设置背景图

我在最近项目里面设置QMdiArea控件背景图时,想要将背景图设置为单个不重复平铺的状态;一顿操作后,代码和效果如下
QPixmap bgPix(":/images/logo.png");
mdiArea->setBackground(QBrush(bgPix));
Qt中设置背景图,防止平铺_第1张图片
真的是一顿操作猛如虎,结果得分0:5。

正确设置背景图

1.先设置背景为NoBrush;
2.然后用setStyleSheet设置样式表;
代码如下:
mdiArea->setBackground(QBrush(Qt::NoBrush));
mdiArea->setStyleSheet(“QMdiArea{”
" background-image: url(:/images/logo.png);"
" background-repeat: no-repeat;"
" background-position: center;"
" background-color: rgba(0, 0, 0, 0);"
" }");
其中,background-repeat是设置图片的重复类型,有inherit, no-repeat, repeat, repeat-x, repeat-y;
background-position:center设置图片居中;
background-color: rgba(0,0,0,0)设置背景透明;
Qt中设置背景图,防止平铺_第2张图片
将图片抠图之后,显示会好看很多,并且只有一个图,不会平铺整个背景。

思考

Qt中设置背景图,如果不设置为NoBrush或拉伸图片,那么就会平铺整个背景。
我想Brush本来就有铺满的意思,所以一般是设置背景颜色。

你可能感兴趣的:(Qt)