Como exibir um QWidget no Ubuntu Touch usando QML e C ++?

0

Como posso exibir texto de QTextEdit (um QWidget) usando um frontend QML e um backend C ++? Atualmente estou desenvolvendo um aplicativo do Ubuntu Phone usando o projeto qmake. Preciso de recursos avançados de edição de texto que o QDM TextEdit não possa oferecer. Eu quero usar o QTextEdit, mas não consigo exibir nenhum texto.

No futuro, vou passar o texto para o objeto QTextEdit para exibir o texto em um formato especial.

Neste exemplo, "Hello World" deve ser exibido.

Qualquer ajuda seria muito apreciada!

Screenshot:

Aquiestáomeucódigoatual:

main.qml

importQtQuick2.0importUbuntu.Components1.1importTextEdit1.0/*!\briefMainViewwithaLabelandButtonelements.*/MainView{//objectNameforfunctionaltestingpurposes(autopilot-qt5)objectName:"mainView"

    // Note! applicationName needs to match the "name" field of the click manifest
    applicationName: "textedit.username"

    /*
     This property enables the application to change orientation
     when the device is rotated. The default is false.
    */
    //automaticOrientation: true

    // Removes the old toolbar and enables new features of the new header.
    useDeprecatedToolbar: false

    width: units.gu(100)
    height: units.gu(75)

    Page {
        title: i18n.tr("textEdit")
        MyEditor {
            // should display Hello World by default (defined in C++)
        }
    }
}

myeditor.h

#ifndef MYEDITOR
#define MYEDITOR

#include <QtGui>
#include <QTextEdit>


class MyEditor : public QTextEdit
{
    Q_OBJECT

public:
    explicit MyEditor(QWidget *parent = 0);
    ~MyEditor();


};

#endif // MYEDITOR

myeditor.cpp

#include "myeditor.h"

MyEditor::MyEditor(QWidget *parent) :
    QTextEdit(parent)
{
    this->setHtml("<h1>Hello World</h1>");
}

MyEditor::~MyEditor() {

}

backend.cpp

#include <QtQml>
#include <QtQml/QQmlContext>
#include "backend.h"
#include "mytype.h"
#include "myeditor.h"


void BackendPlugin::registerTypes(const char *uri)
{
    Q_ASSERT(uri == QLatin1String("TextEdit"));

    qmlRegisterType<MyType>(uri, 1, 0, "MyType");
    qmlRegisterType<MyEditor>(uri, 1, 0, "MyEditor");
}

void BackendPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
{
    QQmlExtensionPlugin::initializeEngine(engine, uri);
}

Por fim, adicionei "widgets" à seguinte linha do arquivo pro:

QT += qml quick widgets
    
por user2544014 06.12.2015 / 22:43

1 resposta

1

Ah, na verdade é dos widgets do Qt. Qt Widgets não podem ser facilmente colados na interface do usuário da QML.

Houve algumas perguntas semelhantes no StackOverflow: qt5-embed-qwidget-object-in -qml

    
por Velkan 07.12.2015 / 21:27