如何用纯qml获取系统、用户信息linux
How to get system, user info with pure qml linux
我正在为 KDE Plasma 4 中的新面板外观准备纯 qml plasmoid,为此我最多只能使用 Qt 4.7 库和 Qt.Quick 1.1。是否可以获取当前用户的全名?
是否有任何 Plasma API 与 PlasmaCore 或 KSM 等相关,或任何 PlasmaCore 数据源引擎,如下所示:
#import org.kde.PlasmaCore 0.1 PlasmaCore
{
Item{
PlasmaCore.DataSource{
engine : "SystemInformation"
connection : "get_user_fullname"
}
}
}
或者我应该构建这样的服务吗?您有什么建议和想法?
任何东西都可以通过 cpp 包装器导出到 qml 上下文中。以下示例代码片段是从 official doc(Qt4.8).
复制的
1) 写一个包装器 class:
在此示例中,它导出当前日期时间。您可以用类似的方式导出您的东西。
class ApplicationData : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE QDateTime getCurrentDateTime() const {
return QDateTime::currentDateTime();
}
};
2) 通过 qml 上下文导出包装器 class:
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() }
就是这样!
我想通了!我确实创建了自定义数据引擎,它通过 qdbus 桥提供用户信息,您可以从这里学习它的基础知识:https://techbase.kde.org/Development/Tutorials/Plasma4/DataEngines @douyw 基本上误解了这个问题,我不知道是谁忽略了这个问题。不管怎么说,这是新一代qml开发的一个重要问题,做Data Engines就是做API.
我正在为 KDE Plasma 4 中的新面板外观准备纯 qml plasmoid,为此我最多只能使用 Qt 4.7 库和 Qt.Quick 1.1。是否可以获取当前用户的全名? 是否有任何 Plasma API 与 PlasmaCore 或 KSM 等相关,或任何 PlasmaCore 数据源引擎,如下所示:
#import org.kde.PlasmaCore 0.1 PlasmaCore
{
Item{
PlasmaCore.DataSource{
engine : "SystemInformation"
connection : "get_user_fullname"
}
}
}
或者我应该构建这样的服务吗?您有什么建议和想法?
任何东西都可以通过 cpp 包装器导出到 qml 上下文中。以下示例代码片段是从 official doc(Qt4.8).
复制的1) 写一个包装器 class:
在此示例中,它导出当前日期时间。您可以用类似的方式导出您的东西。
class ApplicationData : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE QDateTime getCurrentDateTime() const {
return QDateTime::currentDateTime();
}
};
2) 通过 qml 上下文导出包装器 class:
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() }
就是这样!
我想通了!我确实创建了自定义数据引擎,它通过 qdbus 桥提供用户信息,您可以从这里学习它的基础知识:https://techbase.kde.org/Development/Tutorials/Plasma4/DataEngines @douyw 基本上误解了这个问题,我不知道是谁忽略了这个问题。不管怎么说,这是新一代qml开发的一个重要问题,做Data Engines就是做API.