gpt4 book ai didi

qt - Q_PROPERTY 未显示

转载 作者:行者123 更新时间:2023-12-03 05:04:04 30 4
gpt4 key购买 nike

我正在将 Q_PROPERTY 与 QML 一起使用。我的代码是:

using namespace std;

typedef QString lyricsDownloaderString; // this may be either std::string or QString

class lyricsDownloader : public QObject
{
Q_OBJECT
public:
Q_PROPERTY(QString lyrics READ lyrics NOTIFY lyricsChanged)
Q_INVOKABLE virtual short perform() = 0;
inline void setData(const string & a, const string & t); // set artist and track
Q_INVOKABLE inline void setData(const QString & a, const QString & t); // for QStrings
Q_INVOKABLE inline bool anyFieldEmpty(); // check whether everything is filled
inline QString lyrics()
{
return lyrics_qstr;
}

/*some more data*/
signals:
void lyricsChanged(QString);
};

class AZLyricsDownloader : public lyricsDownloader
{
Q_OBJECT
public:
AZLyricsDownloader() : lyricsDownloader("", "") {}
AZLyricsDownloader(const string & a, const string & t) : lyricsDownloader(a, t) {}
Q_INVOKABLE short perform();
//Q_INVOKABLE inline void setData(const string & a, const string & t);// set artist and track

protected:
/*some more data*/
};

QML 中的页面之一是

import QtQuick 1.1
import com.nokia.meego 1.0
import com.nokia.extras 1.0

Page
{
id: showLyricsPage
tools: showLyricsToolbar

Column
{
TextEdit
{
id: lyricsview
anchors.margins: 10
readOnly: true
text: azdownloader.lyrics
}
}

Component.onCompleted:
{
azdownloader.perform()
busyind.visible = false
}

BusyIndicator
{id: busyind /**/ }

ToolBarLayout
{id: showLyricsToolbar/**/}

// Info about disabling/enabling edit mode

InfoBanner {id: editModeChangedBanner /**/}
}

azdownloader 是一个 AZLyricsDownloader 对象

代码在 C++ 中正确运行,函数返回 TextEdit 中应有的文本。

但不幸的是,TextEdit 是空白的。那里没有显示任何文字。信号没有主体,但 AFAIK 信号不需要它。

如果我使用

Q_PROPERTY(QString lyrics READ lyrics CONSTANT)

结果是一样的。

我做错了什么?

最佳答案

当您在 C++ 代码中更改 lyrics 属性的值时,必须发送该属性的 NOTIFY 信号(此处为 void LyricsChanged(); ):

this->setProperty("lyrics", myNewValue);
emit lyricsChanged();

在这种情况下,QML 应更新属性的值。

关于qt - Q_PROPERTY 未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546809/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com