Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt5-将一个简单的Qt快速应用程序移植到Qt5。需要帮助_Qt_Qml_Qt Quick_Qt5 - Fatal编程技术网

Qt5-将一个简单的Qt快速应用程序移植到Qt5。需要帮助

Qt5-将一个简单的Qt快速应用程序移植到Qt5。需要帮助,qt,qml,qt-quick,qt5,Qt,Qml,Qt Quick,Qt5,我正在尝试将一个简单的Qt快速应用程序从Qt4.8移植到Qt5.0beta。 我的初始(Qt4.8)代码类似于以下代码: main.cpp将在具有半透明背景的无框窗口中显示QDeclarativeView #include <QtGui/QApplication> #include "qmlapplicationviewer.h" #include <QtDeclarative> #include <QDeclarativeContext> Q_DECL_E

我正在尝试将一个简单的Qt快速应用程序从Qt4.8移植到Qt5.0beta。 我的初始(Qt4.8)代码类似于以下代码:

main.cpp将在具有半透明背景的无框窗口中显示QDeclarativeView

#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QtDeclarative>
#include <QDeclarativeContext>

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

    QmlApplicationViewer viewer;
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/main.qml"));

    viewer.setWindowFlags(Qt::FramelessWindowHint);

    viewer.setAttribute(Qt::WA_TranslucentBackground);
    viewer.setStyleSheet("background:transparent;");
    viewer.setResizeMode(QDeclarativeView::SizeViewToRootObject);
    viewer.showExpanded();

    return app->exec();
}
为了使其与Qt5兼容,需要进行一些更改。 (我关注了[qt project.org] 为了不错过一些东西)

现在main.cpp类似于:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"
#include <QtWidgets/QtWidgets>
#include <QtWidgets/QLabel>

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

    QGuiApplication app(argc, argv);
    QtQuick2ApplicationViewer viewer;
    viewer.setMainQmlFile(QStringLiteral("qml/main.qml"));
    viewer.setWindowFlags(Qt::FramelessWindowHint);
    viewer.showExpanded();


    return app.exec();
}
但我无法找到保持透明度的方法

setAttribute(Qt::WA_TranslucentBackground);
setStyleSheet("background:transparent;");
setAttribute和setStyleSheet可用于QDeclarativeView(这是一个QWidget)
但不适用于QQuickView(这是一个QWindow)

如果我的QuickWidget对您有帮助,请尝试它:


或者,更好的方法是使用
qt5.3+
中的
QQuickWidget

查看讨论透明度问题的这个线程。。。
import QtQuick 2.0
setAttribute(Qt::WA_TranslucentBackground);
setStyleSheet("background:transparent;");