Afficher les processus : 'QVariant::QVariant(void*)' is private within this context
Bonjour,
Etant debutant, je m' entraine en faisant une petite appli en qml pour monitorer les ressources de mon gnu/linux, j' ai un petit probleme lors de la compilation, manque de connaissances.
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
.
.
.
CPULoad execProcess;
MemInfo execMem;
ProcessusInfo execProcessus;
QmlApplicationViewer viewer;
viewer.rootContext()->setContextProperty("loadcpu", &execProcess);
viewer.rootContext()->setContextProperty("loadmem", &execMem);
viewer.rootContext()->setContextProperty("loadproc", &execProcessus); // Probleme
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
viewer.setMainQmlFile(QLatin1String("qml/testqml/main.qml"));
viewer.showExpanded();
.
.
. |
procinfo.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
class ProcInfo : public QObject
{
Q_OBJECT
public:
explicit ProcInfo();
static ProcInfo fromPath(const QString &path);
//Q_INVOKABLE void pInfo();
bool operator==(const ProcInfo &other) const;
private:
//ProcInfo & operator= (const ProcInfo &);
//ProcessusInfo & operator= (const ProcessusInfo &);
};
struct ProcessusInfo
{
quint32 id;
QString name;
};
Q_INVOKABLE QList<ProcessusInfo> runningProcesses();
bool killProcess(const ProcessusInfo &process, int msecs = 30000);
#endif // PROCINFO_H |
procinfo.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
ProcInfo::ProcInfo()
{
}
QList<ProcessusInfo> runningProcesses()
{
QList<ProcessusInfo> processes;
QDir procDir(QLatin1String("/proc"));
const QFileInfoList procCont = procDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Readable);
QRegExp validator(QLatin1String("[0-9]+"));
Q_FOREACH (const QFileInfo &info, procCont) {
if (validator.exactMatch(info.fileName())) {
const QString linkPath = QDir(info.absoluteFilePath()).absoluteFilePath(QLatin1String("exe"));
const QFileInfo linkInfo(linkPath);
if (linkInfo.exists()) {
ProcessusInfo processInfo;
processInfo.name = linkInfo.symLinkTarget();
processInfo.id = info.fileName().toInt();
processes.append(processInfo);
}
}
}
return processes;
}
//void ProcInfo::pInfo()
//{
//return processes
//ProcessusInfo
//} |
mon erreur de compilation:
Code:
1 2 3 4 5 6
|
In file included from /usr/include/qt4/QtDeclarative/qdeclarativecontext.h:49:0,
from ../test-qml/main.cpp:3:
/usr/include/qt4/QtCore/qvariant.h: In function 'int main(int, char**)':
/usr/include/qt4/QtCore/qvariant.h:429:12: error: 'QVariant::QVariant(void*)' is private
../test-qml/main.cpp:29:72: error: within this context |
provient de cette ligne dans le main.cpp
viewer.rootContext()->setContextProperty("loadproc", &execProcessus);
malheureusement je ne sais pas par quoi je dois remplacer:
rootContext()->setContextProperty
pour imprimer les valeurs dans qml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
.
.
.
currentProcValue = loadproc.runningProcesses();
.
.
.
Text {
id: text4
x:182; y:215
z:1
width: 48
height: 36
font.pointSize: 24
text: currentProcValue
verticalAlignment: Text.AlignVCenter
}
.
.
. |
Pourriez-vous m' aiguiller?
Cordialement.