Comment puis-je afficher du texte de QTextEdit (un QWidget) à l'aide d'une interface QML et d'un programme C ++? Je développe actuellement une application pour téléphone Ubuntu à l'aide du projet qmake. J'ai besoin de fonctionnalités d'édition de texte avancées que QML TextEdit ne peut pas offrir. Je souhaite utiliser QTextEdit, mais je ne parviens pas à afficher de texte.
À l'avenir, je vais transmettre du texte à l'objet QTextEdit pour l'afficher dans un format spécial.
Dans cet exemple, "Hello World" devrait être affiché.
Toute aide serait grandement appréciée!
Voici mon code actuel:
main.qml
import QtQuick 2.0
import Ubuntu.Components 1.1
import TextEdit 1.0
/*!
\brief MainView with a Label and Button elements.
*/
MainView {
// objectName for functional testing purposes (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);
}
Enfin, j'ai ajouté "widgets" à la ligne suivante, le fichier pro:
QT += qml quick widgets
ubuntu-touch
ubuntu-sdk
c++
qml
utilisateur2544014
la source
la source
Réponses:
Oh, cela provient en fait du Qt Widgets. Les widgets Qt ne peuvent pas être facilement collés dans l'interface utilisateur QML.
Il y avait des questions similaires sur StackOverflow: qt5-embed-qwidget-object-in-qml
la source