修改无窗口 QLabel 的 Alpha 通道透明度

2023-12-11

我有一个非常小的 Qt 应用程序,它使用标签来显示 jpeg 图像,而无需先将其放入窗口中。 (我得到了很多帮助使用 QtGui 显示 QImage)

现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明。我尝试过以下操作,但没有任何运气

int main (int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel label (0, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
    label.resize(1280,720);
    label.setPixmap(QPixmap("test.jpg"));
    label.setScaledContents(true);

    // This line should set the alpha transparency to 50%
    label.setStyleSheet("background-color: rgba(255,255,255,50);");

    label.show();
    return app.exec();
}

样式表似乎根本不影响标签。我尝试过更改其他 RGB 值(例如全 0)并在背景颜色和颜色之间交替,但图像始终相同。

更新: 感谢 eyllanesc,以下内容现在对我有用:

int main (int argc, char *argv[])
 {
     QApplication app(argc, argv);

     QPixmap input ("test.jpg");
     QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
     image.fill(Qt::transparent);
     QPainter p(&image);
     p.setOpacity(0.5);
     p.drawPixmap(0,0,input);
     p.end();

     QPixmap output = QPixmap::fromImage(image);

     QLabel label (0, Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
     label.setStyleSheet("background-color: rgba(255,255,255,50);");
     label.resize(1280,720);
     label.setPixmap(output);
     label.setScaledContents(true);
     label.show();

     return app.exec();
 }

The StyleSheet工作正常,问题是QPixmap对象绘制在背景上(而不是背景)。如果你想QPixmap为了保持透明,您可以使用以下两种方法之一:

  1. 第一种方法:

QPixmap input("test.jpg");

QImage image(input.size(), QImage::Format_ARGB32_Premultiplied);
image.fill(Qt::transparent);
QPainter p(&image);
p.setOpacity(0.2);
p.drawPixmap(0, 0, input);
p.end();

QPixmap output = QPixmap::fromImage(image);
label.setPixmap(output);
  1. 第二种方法:

QPixmap input("test.jpg");
QPixmap output(input.size());
output.fill(Qt::transparent);
QPainter p(&output);
p.setOpacity(0.2);
p.drawPixmap(0, 0, input);
p.end();

label.setPixmap(output);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改无窗口 QLabel 的 Alpha 通道透明度 的相关文章

随机推荐

  • jquery html在点击事件时消失

    请看下面的代码
  • Worksheet_FollowHyperlink 和 MsgBox 在 Excel 2010 中不起作用

    Cell A1 HYPERLINK Sheet2 a2 link 工作表 gt 查看代码 Private Sub Worksheet FollowHyperlink ByVal Target As Hyperlink MsgBox hell
  • Android RESTORE_TRANSACTIONS 返回 RESULT_SERVICE_UNAVAILABLE

    我有一个使用应用内购买的应用程序 我已经集成了 Dungeons 示例中除 UI 组件之外的所有代码 我已经提交了我的草稿 apk 激活了它 创建了我的应用内购买 所有这些都受到管理 并发布了它们 我能够成功购买我的应用内商品并解锁相应的内
  • http 503 错误 gwt jetty 服务器 SERVICE_UNAVAILABLE

    在 Web 浏览器中运行项目时 我从 Eclipse 集成码头服务器收到 503 错误 由于我更改了项目的 gae 应用程序 ID 因此出现此错误 java lang ClassNotFoundException com google ap
  • 单击 UIAlertview 上的按钮后,iOS 应用程序立即崩溃

    用户单击 UIAlertview 上的按钮后 我尝试使用电话应用程序拨打号码 手机应用程序确实打开了 但原始应用程序在单击 UIAlertview 上的按钮后立即崩溃 有谁知道原因吗 我确实尝试确保我发布了所有应该发布的内容 谢谢 下面是代
  • 关于@synthesize的问题

    当您从 Xcode 创建一个嵌入 CoreData 的新应用程序时 您会在委托的实现文件中得到这些行 synthesize window window synthesize managedObjectContext managedObjec
  • 微风:为什么继承自Breeze.Sharp.BaseEntity?

    我们已经开始考虑使用 BreezeSharp 因为我们有一个 WebAPI ODATA 服务 我们希望在 ASP NET 站点上重复使用该服务 不涉及 javascript 只涉及纯 C 不幸的是 我们刚刚注意到 根据文档 我们所有的模型实
  • 如何使用条件删除重复项[重复]

    这个问题在这里已经有答案了 我有以下数据框df 如何删除重复项 同时保持最小值level每对重复的item id and country id item id country id level 312330 13535670 82 3123
  • 按“运行应用程序”时出现 Gradle 错误 - Android Studio 0.4.3 [无法创建 Tooling API 的实例]

    当我按 运行应用程序 时 出现此错误 这两天一直在寻找解决办法 你能帮我吗 我安装了 Android Studio 0 4 3 当我的学校在学校计算机上更新 Java 时 此问题开始出现 org gradle tooling GradleC
  • 在此处获取 XElement 的行号

    XDocument xdoc XDocument Load file IEnumerable
  • C 中的 int foo (int argc, ...) 与 int foo() 与 int foo(void)

    所以今天我想到 诚然是第一次 int foo 事实上不同于int foo void 因为第一个允许any输入数量 第二个允许zero Does int foo 简单地忽略任何给定的输入 如果是这样 允许这种形式的功能有什么意义呢 如果没有
  • Reporting Services - 多值参数查询不返回结果

    我使用 SSRS SQL Server 2005 设置了两个报告 为了便于解释 我们称它们为MAIN REPORT and SUB REPORT MAIN REPORT运行返回一组区域的查询 每个区域有多个标记名 AREA Tagname
  • S4 方法参数的惰性求值

    我正在实现一个 S4 类 其中包含data table 并尝试实施 对象的子集 如所描述的here 这样它也可以子集化data table 例如 仅定义i子集化 library data table SuperDataTable lt se
  • Jquery.height() 使用 F5 或 CTRL+F5 返回不同的结果

    所以我试图找到图像的高度 然后添加上边距 这使我能够强加一个垂直中心 我正在运行这段代码 并在F5刷新我得到了正确的高度 但是CTRL F5 刷新它给了我一个小得多的高度 我有点认为这是一个加载 延迟的事情 但我正在使用准备好的文档 所以不
  • 是否可以从 Spotify 访问流数据?

    我正在寻求构建一个应用程序 可以从 Spotify 流式传输音乐并操纵歌曲的节奏和音高 是否可以从 Spotify iOS SDK 或任何其他资源访问原始音频缓冲区 不可以 原始音频无法通过任何 Spotify API SDK 访问 PS
  • 创建Android Activity类的对象

    我有一个扩展的类Activity我试图在普通的 java 类中创建该类的对象 但它抛出了一个异常 Can t create handler inside thread that has not called looper prepare 我
  • 尝试读取或写入受保护的内存

    我开始看到我的应用程序中的几个不同位置抛出了 AccessViolationException 它从未发生在我的开发电脑 我们的测试服务器上 它也只出现在我们 2 台生产服务器中的 1 台上 因为它似乎只发生在我们的一台生产服务器上 所以我
  • 如何检测UDP数据包是否丢失? (C#)

    我正在开发 SNTP 客户端 它通过 UDP 从 NTP 服务器获取时间戳 一切正常 我可以下载时间戳并更新 Windows 时钟 但如果 UDP 数据包丢失 我想收到一条消息 如何检测数据包何时丢失 我需要这些信息 因为如果数据丢失我想获
  • 使用 awk 忽略 CSV 文件字段中的逗号

    我试图从 CSV 文件最后一行的第二个字段中获取一个数字 到目前为止 我有这个 awk F END print 2 file path fileName csv 除非最后一行中的第一个字段中有逗号 否则这是有效的 所以对于看起来像这样的行
  • 修改无窗口 QLabel 的 Alpha 通道透明度

    我有一个非常小的 Qt 应用程序 它使用标签来显示 jpeg 图像 而无需先将其放入窗口中 我得到了很多帮助使用 QtGui 显示 QImage 现在我想更改此 jpeg 的 Alpha 通道以使图像部分透明 我尝试过以下操作 但没有任何运