为什么Qt Creator Ubuntu发布屏幕为空?

时间:2014-12-07 20:26:01

标签: c++ qt ubuntu qml qt-creator

我正在尝试将应用程序发布到Ubuntu商店,但是Qt Creator(或其他东西)出了问题。

我曾经能够看到这个:

Qt Creator - Ubuntu Publish Screen for Apps

但现在我所看到的就是:

Qt Creator - An Empty Ubuntu Publish Screen for Apps

正如您所看到的(或者,如果您使用的是没有图像的阅读器),此处的第二张图片不会显示“常规”标签,这样我就可以输入维护者,名称,描述等详细信息,安全策略组 - 它没有“清单”选项卡“AppArmor”选项卡或“排除”选项卡。 “创建包”按钮消失了。

我剩下的只是一个空白屏幕,只有一个启用按钮,显示“验证现有点击包”,但是当我点击它时(因为我无能为力,似乎......),它需要我到我的项目目录,其中列出了我的所有应用程序。我选择了有问题的应用程序,我无法点击对话框上的打开按钮,因为在任何地方都没有* .click文件可供查看。

我做错了吗?你知道这里发生了什么吗?

另外,我读到为了发布到商店,我们需要创建“点击应用”。我在宇宙中寻找这个短语并空手而归。如何创建“点击应用”?我认为我创建的应用程序是一个点击应用程序(我去了Qt Creator> Qt快速应用程序> ...)。

链接:

发布应用教程:http://developer.ubuntu.com/publish/apps/packaging-click-apps/

2 个答案:

答案 0 :(得分:6)

原因是您正在使用Qt Project中的QtCreator,而不是使用Ubuntu SDK,它提供了自己的QtCreator自定义版本。

为了完成这项工作,您需要使用Ubuntu SDK。 First you need to install it

$ sudo add-apt-repository ppa:ubuntu-sdk-team/ppa
$ sudo apt-get update && sudo apt-get install ubuntu-sdk

这也将安装qtcreator-plugin-ubuntu包,自己的工具链等。然后你可以运行它,例如从命令行如下:

$ ubuntu-sdk

您还可以在Unity Dash Applications镜头中搜索“Ubuntu SDK”,如下图所示:

enter image description here

您也可以在搜索行中输入名称,如下图所示:

enter image description here

请确保您执行以下操作:

New Project > Ubuntu > Simple UI/Html/QML/etc

enter image description here

而不是例如您根据自己的问题尝试了什么:

New Project > Qt Quick Application

您也可以使用to set up the click targets and device kits部分内容(构建和运行)显示在下面内联:

enter image description here

答案 1 :(得分:1)

首先你需要好好阅读this,幸运的是我最近一直在开发ubuntu HTML5应用程序,所以我以前一直在你的位置,你将能够使用QML选项集成你的c ++代码(因为ubuntu开发人员只有2个HTML5或QML选项。

这是一个在xda上创建的示例项目,用于创建一个简单的计算器应用程序(注意如何包含您的cpp文件):

文件名:apcalc-qml.pro

QT += qml quick
# If your application uses the Qt Mobility libraries, uncomment the following
# lines and add the respective components to the MOBILITY variable.
# CONFIG += mobility
# MOBILITY +=

#C++ source files
SOURCES +=  cpp/main.cpp\
            cpp/applicationdata.cpp\

#C++ header files
HEADERS  += cpp/applicationdata.h

#Path to the libraries...
INCLUDEPATH +=  $$PWD\
                $$PWD/../../../../usr/lib
DEPENDPATH += $$PWD/../../../../usr/lib

#Path to "other files" in this case  the QML-Files
OTHER_FILES += \
    qml/main.qml\
    qml/basicCalc/*.qml

文件名:main.cpp

#include <QtGui/QGuiApplication>
#include <QGuiApplication>
#include <QQuickView>
#include <QtQml/qqmlcontext.h>
#include <stdio.h>
#include  "applicationdata.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QQuickView view;
    ApplicationData data;

    //Resize Mode so the content of the QML file will scale to the window size
    view.setResizeMode(QQuickView::SizeRootObjectToView);

    //With this we can add the c++ Object to the QML file
    view.rootContext()->setContextProperty("applicationData", &data);

    //Resolve the relativ path to the absolute path (at runtime)
    const QString qmlFilePath= QString::fromLatin1("%1/%2").arg(QCoreApplication::applicationDirPath(), "qml/main.qml");
    view.setSource(QUrl::fromLocalFile(qmlFilePath));

    //For debugging we print out the location of the qml file
    QByteArray ba = qmlFilePath.toLocal8Bit();
    const char *str = ba.data();
    printf("Qml File:%s\n",str);

    //Not sure if this is nessesary, but on mobile devices the app should start in fullscreen mode
    #if defined(Q_WS_SIMULATOR) || defined(Q_OS_QNX)
    view.showFullScreen();
    #else
    view.show();
    #endif
    return app.exec();
}

文件名:main.qml

import QtQuick 2.0
import Ubuntu.Components 0.1
import "basicCalc"
import QtQuick.Window 2.0
MainView {
    //objectName for functional testing purposes (autopilot-qt5)
    objectName: "mainView"
    applicationName: "apcalc-qml"
    automaticOrientation:true;
    width: units.gu(60);
    height: units.gu(100);
    id:root
    Tabs {
        objectName: "Tabs"
        ItemStyle.class: "new-tabs"
        anchors.fill: parent
        id:mainWindow;
        Tab {
            objectName: "Calculator"
            title: "Calculator"
            page:BasicCalc{
                width: root.width;
                height: root.height-root.header.height;
                anchors.top: parent.top;
                anchors.topMargin: root.header.height;
                onToCalculateChanged: {
                    //access to the c++ Object 
                    result=applicationData.calculate(toCalculate);
                }
            }
        }
    }
}

文件名:applicationdata.h

#ifndef APPLICATIONDATA_H
#define APPLICATIONDATA_H
#include <QObject>

class ApplicationData : public QObject
{
    Q_OBJECT
public:
    explicit ApplicationData(QObject *parent = 0);
    Q_INVOKABLE QString calculate(QString) const;
signals:

public slots:
};
#endif // APPLICATIONDATA_H

文件名:applicationdata.cpp

#include "applicationdata.h"
ApplicationData::ApplicationData(QObject *parent) :
    QObject(parent)
{
}
QString ApplicationData::calculate(QString command) const {
    // Some Logic comes here
    return command;
}

你可以查看完整的教程here,虽然这个应用程序适用于ubuntu touch,但我相信所有的QML项目都遵循相同的程序。

发布应用

首先,点击应用表示一个包,一个文件点击&gt;安装您的应用程序AKA(个人包存档(PPA)),为了发布您的应用程序,您需要遵循详细here中提到的一些程序,尽管xda教程以明确的方式解释了所有内容。