3

如何设置矩形/屏幕的透明度。

我有以下代码:

// main.cpp
void main(int argc, char*[] argv)
{
    QApplication::setGraphicsSystem("raster");
    QApplication app(argc, argv);

    QDeclerativeView view;
    view.setSource(QUrl::fromLocalFile("loaderTest.qml"));

    view.setResizeMode(QDeclarativeView::SizeRootObjectToView);
    view.showFullScreen();

    //QRegion mask(10, 10,  100, 100);
    //view.setMask();

    view.show();
    app.exec();
}

QML 文件是:

//loaderTest.qml
Rectangle
{
    id: mainRectangle
    width: 1000
    height: 700
    color: "transparent"
    //color: "#00000000"

    Image
    {
        id: image1;
        width: 348;
        height: 155;
        anchors.horizontalCenter: parent.horizontalCenter;
        anchors.verticalCenter: parent.verticalCenter;
        source: "test.png"
    }

    Loader
    {
        id: mainLoader
        anchors.fill: parent;
        source: "";
        focus: true;
    }
}

我在这个屏幕上有一个加载器和一个图像,背景颜色是透明的。当我运行这个应用程序时,它应该在中心显示带有图像的透明背景(因为我没有设置加载器源)。

但我得到的是在屏幕中心填充白色背景的图像,我不知道是谁在填充这个白色背景颜色,因为我提到了透明颜色作为背景。

我正在使用 QT.4.7.0 和 Linux。

我的目标系统上有两个平面,一个是视频平面,另一个是图形平面,当我运行具有透明背景的 GUI(在视频位置设置透明度)时,它应该在上面示例中的视频位置显示视频,它显示背景为白色,如它应该在视频平面上显示视频播放。

4

3 回答 3

3

By default the QDeclarativeView paints a background. Maybe that's the problem in your case.

From http://doc.qt.nokia.com/4.7/qdeclarativeperformance.html

You can also prevent QDeclarativeView from painting its window background if you will provide the background of your application using QML, e.g.

 QDeclarativeView window;
 window.setAttribute(Qt::WA_OpaquePaintEvent);
 window.setAttribute(Qt::WA_NoSystemBackground);
 window.viewport()->setAttribute(Qt::WA_OpaquePaintEvent);
 window.viewport()->setAttribute(Qt::WA_NoSystemBackground);
于 2011-10-19T19:04:08.257 回答
0

我的第一个猜测是背景是白色的,你的矩形确实是完全透明的。

LoaderScreen 是什么类型的,我猜它是某种 QDecalarativeView,请原谅任何技术失误,已经快一年没有编码 Qt/QML。我记得视图的默认背景是白色的,无论如何你希望达到什么样的透明度?

于 2011-10-19T12:13:28.270 回答
0

如果您只在 QPushButton 上设置背景颜色,则背景可能不会出现,除非您将边框属性设置为某个值。这是因为,默认情况下,QPushButton 绘制一个与背景颜色完全重叠的原生边框。这可能会在 QPushButton 周围显示一个黑色矩形框。您将面临这个问题,尤其是在 Linux 机器上。为了避免这种情况,您可以将边框属性设置为无

小部件->setStyleSheet("border:none");

于 2018-01-08T16:30:45.740 回答