加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何从C修改QML文本

发布时间:2020-12-16 09:40:09 所属栏目:百科 来源:网络整理
导读:我是Qt的新手,我正在尝试从C代码修改QML文本(在屏幕上显示). 我修改了文本,但没有在屏幕上更新,所以我修改了文本变量,但是屏幕上的第一个文本. 这是代码: //main.cpp #include QApplication#include QDeclarativeEngine#include QDeclarativeComponent#incl
我是Qt的新手,我正在尝试从C代码修改QML文本(在屏幕上显示).
我修改了文本,但没有在屏幕上更新,所以我修改了文本变量,但是屏幕上的第一个文本.

这是代码:

//main.cpp

#include <QApplication>
#include <QDeclarativeEngine>
#include <QDeclarativeComponent>
#include <QDeclarativeItem>
#include <QDebug>
#include "qmlapplicationviewer.h"

Q_DECL_EXPORT int main(int argc,char *argv[])
{
    QScopedPointer<QApplication> app(createApplication(argc,argv));

    QmlApplicationViewer viewer;
    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/textModification/main.qml"));
    viewer.showExpanded();

    QDeclarativeEngine engine;
    QDeclarativeComponent component(&engine,QUrl::fromLocalFile("qml/textModification/main.qml"));
    QObject *object = component.create();

    QObject *item = qobject_cast<QDeclarativeItem*>(object);
    QObject *text = item->findChild<QObject*>("text1");
    qDebug() << "Text of 'text1' when it's created' -------->" << text->property("text");

    text->setProperty("text","THIS WORKS!");

    qDebug() << "Text of 'text1' after modifying it -------->" << text->property("text");

    return app->exec();
}

//main.qml

import QtQuick 1.0

Item {
    id: item1
    objectName: "item1"
    width: 400
    height: 400

    Text {

        id: text1
        objectName: "text1"
        x: 0
        y: 0
        width: 400
        height: 29
        text: "This text should change..."
        font.pixelSize: 12
    }

}

有人能帮助我吗?

谢谢.

解决方法

这可能不如使用objectName属性查找对象那么灵活,但这很简单.

main.cpp中

#include <QtGui/QApplication>
#include "qmlapplicationviewer.h"
#include <QGraphicsObject>


int main(int argc,char *argv[])
{
QApplication app(argc,argv);

QmlApplicationViewer viewer;
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/TextTest/main.qml"));
QObject *rootObject = viewer.rootObject();
rootObject->setProperty("text1Text",QVariant("Change you text here..."));

viewer.showExpanded();
int returnVal = app.exec();
delete rootObject;
return returnVal;
}

main.qml

import QtQuick 1.0

    Item {
    id: item1
    width: 400
    height: 400
    property alias text1Text: text1.text

    Text {
        id: text1
        width: 400
        height: 29
        color: "red"
        text: "This text should change..."
        font.pixelSize: 12
    }

    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读