【问题标题】:How to get system, user info with pure qml linux如何使用纯 qml linux 获取系统、用户信息
【发布时间】:2015-07-20 06:10:19
【问题描述】:

我正在为我在 KDE Plasma 4 中的新面板外观准备纯 qml plasmoid,我最多只能使用 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"
      }
  }
}

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

【问题讨论】:

  • 您可以随时为这些信息编写包装器并将它们导出到 qml。
  • 你到底是什么意思,介意举个小例子吗,谢谢。
  • 举个例子。请看下面。

标签: linux qt qml kde plasmoid


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    任何东西都可以通过 cpp 包装器导出到 qml 上下文中。以下示例代码 sn-ps 复制自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() }
    

    就是这样!

    【讨论】:

    • 我当然知道这个过程,我已经在 kuser.h 库的帮助下轻松获得了用户信息 -,- ,我正在制作纯 qml plasmoid,我的意思是我只能使用 js,或者xml 代码插件与 cpp 不同,我必须准备一个基于构建的 plasmoid。它必须是纯的,plasmapkg 可以轻松安装它。
    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2011-03-07
    • 2012-05-07
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多