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
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!
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
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