我正在准备纯qml plasmoid用于我在KDE Plasma 4中的新面板外观,我必须使用最多的Qt 4.7库和Qt.Quick 1.1。是否可以获取当前用户的全名? 是否存在与PlasmaCore或KSM等相关的等离子API或任何PlasmaCore数据源引擎,如下所示:
#import org.kde.PlasmaCore 0.1 PlasmaCore
{
Item{
PlasmaCore.DataSource{
engine : "SystemInformation"
connection : "get_user_fullname"
}
}
}
或者我应该建立这样的服务?你有什么建议和想法?谢谢你的到来。
答案 0 :(得分:1)
我想通了!我确实创建了自定义数据引擎,通过qdbus桥提供用户信息,你可以从这里学习它的基础知识:https://techbase.kde.org/Development/Tutorials/Plasma4/DataEngines @douyw基本上误解了这个问题,我不知道是谁歪曲了这个问题。无论如何,它是新一代qml开发的一个重要问题,使得数据引擎只是简单地制作API。
答案 1 :(得分:0)
任何东西都可以通过cpp包装器导出到qml上下文中。以下示例代码段从official doc(Qt4.8)复制。
1)写一个包装类:
在此示例中,它导出当前日期时间。你可以用类似的方式导出你的东西。
class ApplicationData : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE QDateTime getCurrentDateTime() const {
return QDateTime::currentDateTime();
}
};
2)通过qml上下文导出包装类:
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QDeclarativeView view;
ApplicationData data;
view.rootContext()->setContextProperty("applicationData", &data);
view.setSource(QUrl::fromLocalFile("MyItem.qml"));
view.show();
return app.exec();
}
3)在qml文件(MyItem.qml)中使用它:
import QtQuick 1.0
Text { text: applicationData.getCurrentDateTime() }
那就是它!