如何使用 QML 和 C++ 在 Ubuntu Touch 中显示 QWidget?

如何使用 QML 和 C++ 在 Ubuntu Touch 中显示 QWidget?

如何使用 QML 前端和 C++ 后端显示 QTextEdit(QWidget)中的文本?我目前正在使用 qmake 项目开发 Ubuntu Phone 应用程序。我需要 QML TextEdit 无法提供的高级文本编辑功能。我想使用 QTextEdit,但无法让它显示任何文本。

将来我会将文本传递到 QTextEdit 对象中,以特殊的格式显示文本。

在这个例子中,应该显示“Hello World”。

任何帮助将不胜感激!

截屏: 文本编辑

这是我当前的代码:

主文件

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++)
        }
    }
}

我的编辑器

#ifndef MYEDITOR
#define MYEDITOR

#include <QtGui>
#include <QTextEdit>


class MyEditor : public QTextEdit
{
    Q_OBJECT

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


};

#endif // MYEDITOR

我的编辑器

#include "myeditor.h"

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

MyEditor::~MyEditor() {

}

后端.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);
}

最后,我在 pro 文件的以下行中添加了“widgets”:

QT += qml quick widgets

答案1

哦,它实际上来自 Qt Widgets。Qt Widgets 不能轻易粘贴到 QML 用户界面中。

StackOverflow 上还有一些类似的问题:在 qml 中嵌入 qwidget 对象

相关内容