Qt 之窗体透明 |
您所在的位置:网站首页 › qt窗体背景透明 › Qt 之窗体透明 |
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 关于窗体透明,经常遇到,下面我们针对常用的透明效果进行讲解: 全透明(主窗体、子窗体均透明)主窗体透明(子窗体不透明)子窗体透明(主窗体不透明) 正常状态正常状态下,效果如下: 这里,我们可以透过整个窗体观看到桌面的背景。 效果设置窗口的透明度,如下: setWindowOpacity(0.5);透明度取值范围:0.0(全透明) - 1.0(不透明),默认值为1.0。 主窗体透明这里,我们可以透过窗体的一部分观看到桌面的背景。 效果使用paintEvent进行背景绘制 主窗体采用背景色: void MainWindow::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); // QColor最后一个参数80代表alpha通道,一般用作透明度 painter.fillRect(rect(), QColor(50, 50, 50, 80)); }主窗体采用背景图片: 首先,设置背景透明: setAttribute(Qt::WA_TranslucentBackground, true);然后,绘制窗体背景: void QZXingWidget::paintEvent(QPaintEvent *event) { QPixmap covertPixmap(":/Images/background"); QPixmap pixmap(covertPixmap.width(), covertPixmap.height()); pixmap.fill(Qt::transparent); QPainter painter(&pixmap); QPoint start_point(0, 0); QPoint end_point(0, pixmap.height()); //QLinearGradient进行渐变色设置 QLinearGradient gradient(start_point, end_point); gradient.setColorAt(0, QColor(255, 255, 255, 100)); gradient.setColorAt(0.5, QColor(255, 255, 255, 150)); gradient.setColorAt(1, QColor(255, 255, 255, 255)); painter.fillRect(rect(), QBrush(gradient)); painter.setCompositionMode(QPainter::CompositionMode_SourceIn); painter.drawPixmap(0, 0, covertPixmap); painter.end(); QPainter painter2(this); painter2.drawPixmap(0, 0, pixmap); } 子窗体透明这部分在博客中已经分享过了,这里就不再过多阐述,请参考:Qt之透明提示框 更多参考 Qt之设置QWidget背景色 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |