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.1Rectangle {
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.