2015-05-09 127 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