Common Qt compile errors/hu

From Qt Wiki
< Common Qt compile errors
Revision as of 09:26, 26 May 2015 by Wieland (talk | contribs) (Wieland moved page Common Qt compile errors to Common Qt compile errors/hu: not english)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This article may require cleanup to meet the Qt Wiki's quality standards. Reason: Auto-imported from ExpressionEngine.
Please improve this article if you can. Remove the {{cleanup}} tag and add this page to Updated pages list after it's clean.

Egy rövid gyűjtemény azokról a fordítási/futtatási hibákról, amelyek kiskoromban sok bosszúságot és fejtörést okoztak nekem. Vannak köztük banális problémák illetve olyanok is amiknek semmi köze Qt-hoz. Sok moc-al kapcsolatos problémát azóta a QtCreator azóta okosan megold magától.

1.

expected initializer before 'class'<code>

Végignézni mindent, beszórni mindenhova a pontosvesszőt, az összes headerbe mindenhova.

2.

undefined reference to 'függvény neve'

A nevezett függvényt a headerben deklaráltad, de nem implementáltad.

3.

'classname' is not a namespace<code>

Nincs beincludolva az a header amiben az 'osztály' van.

4.

Invalid use of struct 'classname'

Ld. 3. pont

5.

undefined reference to 'slot neve'<code>

make clean qmake make vagy rebuild

6.

undefined reference to `vtable for classname` olyan osztályban ami a QObjecttől származik.

Ugyebár ha az osztályainkban szignálokat, slotokat akarunk használni akkor a QObjecttől származtatjuk őket, és az osztálydeklaráció elején megejtünk egy Q_OBJECT makrót. Ha ezt utólag tesszük meg valószínűleg nem fogja átzavarni a mocon. Legegyszerűbb megoldás: make clean && qmake && make

7.

'classname' has not been declared<code> habár az >osztályneve< osztályt már beincludoltad.
Ilyen akkor szokott leggyakrabban előfordulni, ha van a és b osztályod, és a tartalmaz b valamint b tartalmaz a típusú objektumokat.
Megoldás: az osztálydeklarációk (pl. a) előtt meg kell adni azt, hogy a hiányolt osztály létezik: (hint: foward declaration)

class a; class b { … private: a m_object_a; }

8.

Multiple types in one declaration egy headerben több osztály definiálásakor.

Pontosvessző minden class deklaráció után.

9. Undefined reference to QObject::staticMetaCall() mindez miután a Q_OBJECT makrót hozzáadtad. Tehát van egy osztályod amit valamiből (jellemzően QMainWindow, vagy QDialog stb) örökölsz, és egyéni slotokat/signalokat kívánsz hozzáadni.

Megoldás: make clean, qmake, make Régi QtCreator esetén a rebuild all nem elég kell egy qmake elé. Ok: a fordító nem jön rá magától, hogy az adott fájlt át kell zavarni a mocon.

Mit is szoktak mondani az angolok ilyenkor: Feel free to extend it!