2015-05-09 121 views
0

我正在为我在KDE Plasma 4中的新面板appereance准备pure qml plasmoid,并且我必须使用至多Qt 4.7库和Qt.Quick 1.1。是否有可能获取当前用户的全名? 是否有相关的,像PlasmaCore或KSM等或任何PlasmaCore数据源引擎像下面的任何等离子体API:如何使用纯qml linux获取系统,用户信息

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

或者我应该建立这样的服务?你有什么建议和想法?非常感谢。

+0

您可以随时为这些信息编写包装并将其导出到qml。 – douyw

+0

你究竟是什么意思,你介意举个小例子,谢谢。 – oksidez

+0

举个例子。请参阅下面。 – douyw

回答

1

我想通了!我确实创建了自定义数据引擎,通过qdbus桥提供用户信息,您可以从这里了解它的基本知识:https://techbase.kde.org/Development/Tutorials/Plasma4/DataEngines @douyw基本上误解了这个问题,我不知道谁会使用这个问题。无论如何,它是新一代qml开发的一个重要问题,使Data Engines只是简单地制作API。

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() } 

这就是它!

+0

当然我知道这个过程我已经得到了kuser.h库的帮助下的用户信息easly - , - ,即时制作纯qml plasmoid,我的意思是我只能使用js或xml代码插件与cpp其他明智我必须准备一个基于生成的plasmoid。它必须是纯粹的plasmapkg可以安装它easly。 – oksidez