Несмотря на то, что ответ пользователя vahanchos был полезен для меня, и, вероятно, это путь для других, у меня получилось другое решение.
В моем случае я кодирую только один тип специального устройства и известный набор машин для разработки. поэтому я мог бы просто прочитать соответствующие файлы в sys/class/power_supply/
. Я не могу гарантировать, что другие устройства будут называть их файлы точно такими же. Но, возможно, стоит попробовать.
#include <QFile>
void refreshValues(){
QFile acLine("/sys/class/power_supply/AC/online");
QFile acAdp("/sys/class/power_supply/ADP0/online");
QFile bCap("/sys/class/power_supply/BAT0/capacity");
bool ac = false;
int level = 0;
if(acLine.exists()){
acLine.open(QIODevice::ReadOnly | QIODevice::Text);
if(QString(acLine.readAll()).toInt()){
ac = true;
}
acLine.close();
}else if(acAdp.exists()){
acAdp.open(QIODevice::ReadOnly | QIODevice::Text);
if(QString(acAdp.readAll()).toInt()){
ac = true;
}
acAdp.close();
}
if(bCap.exists()){
bCap.open(QIODevice::ReadOnly | QIODevice::Text);
level = QString(bCap.readAll()).toInt();
bCap.close();
}
setAcPowerActive(ac);
setBatteryLevel(level);
}
Вы можете посмотреть, как это было реализовано в Qt Mobility: https://github.com/enthought/qt-mobility/blob/master/src/systeminfo/qsystembatteryinfo.cpp – danielfranca
См https: // forum.qt.io/topic/18874/qt-c-how-to-check-battery-level-laptop/4. – user1929959
попробуйте http://askubuntu.com/questions/324222/how-to-check-battery-status-with-the-ubuntu-sdk – nkcode