0

我正在为我在 KDE Plasma 4 中的新面板外观准备纯 qml plasmoid,我最多只能使用 Qt 4.7 库和 Qt.Quick 1.1。是否可以获取当前用户的全名?是否有任何与 PlasmaCore 或 KSM 等或任何 PlasmaCore 数据源引擎相关的等离子 API,如下所示:

#import org.kde.PlasmaCore 0.1 PlasmaCore
{
  Item{
      PlasmaCore.DataSource{
          engine  : "SystemInformation"
          connection : "get_user_fullname"
      }
  }
}

或者我应该建立这样的服务吗?你有什么建议和想法?

4

2 回答 2

1

我想通了 !我确实创建了通过 qdbus 桥提供用户信息的自定义数据引擎,您可以从这里学习它的基础知识:https: //techbase.kde.org/Development/Tutorials/Plasma4/DataEngines @douyw 基本上误解了这个问题,我不知道谁减去了这个问题。不管怎样,新一代qml开发的一个重要问题,做Data Engines就是做API。

于 2015-05-11T16:01:59.127 回答
0

任何东西都可以通过 cpp 包装器导出到 qml 上下文中。以下示例代码片段是从官方文档(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() }

就是这样!

于 2015-05-10T00:35:07.977 回答