首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt5 -porting一个简单的Qt快速应用程序到Qt5。需要帮助

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

Stack Overflow用户
提问于 2012-12-05 22:40:03
回答 1查看 4.2K关注 0票数 5

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

main.cpp将在半透明背景的无边框窗口中播放QDeclarativeView

代码语言:javascript
复制
#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();
}

main.qml将只在另一个透明矩形内显示一个红色矩形。

代码语言:javascript
复制
import QtQuick 1.1

Rectangle {
    width: 360
    height: 360
    color: "transparent"
    Rectangle
    {
     x: 125
     y: 122
        width: 110
        height: 116
        anchors.centerIn: parent
        color: "red"
  radius: 27
    }

    Text {
     color: "black"
        text: qsTr("Press me!")
        font.pointSize: 14
        anchors.centerIn: parent
    }

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

为了使其与Qt5兼容,几乎不需要做任何更改。(为了不错过什么,我关注了http://qt-project.org/doc/qt-5.0/portingqmlapp.html qt-project.org )

现在main.cpp类似于:

代码语言:javascript
复制
#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();
}

在main.qml中,只替换了一行。

代码语言:javascript
复制
import QtQuick 2.0

但我找不到保持透明度的方法

代码语言:javascript
复制
setAttribute(Qt::WA_TranslucentBackground);
setStyleSheet("background:transparent;");

setAttribute和setStyleSheet可用于QDeclarativeView ( QWidget),但不可用于QQuickView ( QWindow)

EN

回答 1

Stack Overflow用户

发布于 2012-12-28 21:47:04

试试我的QuickWidget,如果它对你有帮助的话:

http://code.google.com/p/quickwidget/

或者,更好的方法是使用来自Qt 5.3+QQuickWidget

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13725644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档