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
procinfo.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
mon erreur de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 //}
provient de cette ligne dans le main.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
viewer.rootContext()->setContextProperty("loadproc", &execProcessus);
malheureusement je ne sais pas par quoi je dois remplacer:
rootContext()->setContextProperty
pour imprimer les valeurs dans qml
Pourriez-vous m' aiguiller?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } . . .
Cordialement.
Partager