How to create a TransparentWindow, using Qt5, with QtQuick1



  • I'm now using Qt5, but for some reasons I want to use QtQuick1, because there are some problems in my program when using QtQuick2.(mainly because of OpenGL)

    But eventually I still faced problems using QtQuick1. If I set Qt::WA_TranslucentBackground to a QDeclarativeView, the program crashes when executing at app->exec(). My Code is:

    @
    #include <QtWidgets/QApplication>
    #include <QtDeclarative/qdeclarative.h>
    #include <QtDeclarative/qdeclarativeview.h>

    int main(int argc, char *argv[])
    {
    QScopedPointer<QApplication> app(new QApplication(argc, argv));

    QDeclarativeView view;
    view.setSource(QUrl::fromLocalFile("main.qml"));
    QPalette palette = view.palette();
    palette.setColor(QPalette::Base, Qt::transparent);
    view.setPalette(palette);
    //view.setStyleSheet("background:transparent"); //uncomment this line will make the whole window invisible
    //view.setAttribute(Qt::WA_TranslucentBackground); //uncomment this line will make the program crash
    view.setWindowFlags(Qt::FramelessWindowHint);

    view.show();

    return app->exec();
    }
    @

    And my QML file(main.qml):
    @
    import QtQuick 1.1

    Rectangle {
    width: 600
    height: 400
    color: "transparent"
    Image {
    source: "some_pic.png" //it is less than 600 * 400
    }
    }
    @

    My system is Win Xp. Similar code works well when I'm using Qt4.8..

    Any ideas? Thank you :)



  • I have test your example using Qt5 on Ubuntu, and I have no issue to compile and run such a implementation.
    @viewer.setStyleSheet("background:transparent");
    viewer.setAttribute(Qt::WA_TranslucentBackground);@
    are working fine for me.



  • What is we use QGLWidget as viewport. It will be failed


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.