QWidget背景透明

时间:2016-07-13 11:03:23

标签: c++ qwidget qt5.6

我在主窗口中有一个小部件,小部件具有以下样式:

    background-color:#ffeeeeee;width:100%;height:100%;

它设置为窗口小部件布局并控制自动大小以填充窗口小部件的几何图形,但窗口小部件的背景始终是透明的。我该怎么做才能使它变得不透明?

这是使用在RedHat Linux 7.2上运行的Qt5.6

注意:语法#ffeeeeee特定于Qt,其中第一个节点是alpha,然后是红色,绿色和蓝色八位字节。

3 个答案:

答案 0 :(得分:1)

您的颜色中有太多字符。变化:

// bitmap is int[]
GCHandle imageHandle = GCHandle.Alloc(bitmap, GCHandleType.Pinned);
IntPtr imageDataPtr = Marshal.UnsafeAddrOfPinnedArrayElement(bitmap, 0);
Bitmap image = new Bitmap(width, height, width * 4, Format32bppArgb, imageDataPtr);

为:

[INFO]             [ERROR] Generator 'com.google.gwt.inject.rebind.GinjectorGenerator' threw an exception while rebinding 'de.timetoact.connections.adminui.client.application.AdminUI'
[INFO] java.lang.NullPointerException
[INFO]  at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBinding(BindingsProcessor.java:498)
[INFO]  at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBindingForUnresolved(BindingsProcessor.java:290)
[INFO]  at com.google.gwt.inject.rebind.BindingsProcessor.createImplicitBindingsForUnresolved(BindingsProcessor.java:278)
[INFO]  at com.google.gwt.inject.rebind.BindingsProcessor.process(BindingsProcessor.java:240)

如果你想使用透明度,你必须明确:

background-color: #ffeeeeee;

答案 1 :(得分:1)

存在背景颜色并设置为以下任何一种颜色:

    background-color:white;width:100%;height:100%;

    background-color:#ffffff;width:100%;height:100%;

或我原来的:

    background-color:#ffeeeeee;width:100%;height:100%;

属性autoFillBackground设置为false,窗口小部件的背景在运行时是透明的。

然而,删除任何背景颜色样式并将样式保留为:

    width:100%;height:100%

属性autoFillBackground设置为true,窗口小部件是不透明的。

据我所知,样式中没有错误,我相信这可能是Qt中的一个错误。

答案 2 :(得分:0)

您是否尝试过使用QWidget :: setWindowOpacity(1),其中1 = opaque且0 = transperant。

同时尝试QGraphicsOpacityEffect。以下是设置按钮50%不透明度的代码,但也可以扩展到小部件。

ui->setupUi(this);
QGraphicsOpacityEffect * effect = new QGraphicsOpacityEffect(ui->pushButton);
effect->setOpacity(0.5); 
ui->pushButton->setGraphicsEffect(effect);