Qt konzolos alkalmazás + DBus

 ( wowbagger | 2008. július 2., szerda - 11:44 )

Kedves Fórumtársak!

Egy olyan programot kellene írnom, ami Qt-t használ, és a DBus-ra is csatlakozik, és ott egy másik programmal beszélget.
A programhoz - szerintem - felesleges a gui, így konzolos appot szeretnék készíteni, de belefutottam pár nehézségbe:

- nincs főablak
- a QDBusAbstractAdaptor::QDBusAbstractAdaptor ( QObject * obj ) konstruktornak be kell adni valamilyen szülő objektumra egy pointert. Mivel nincs főablak, így nem tudom, hogy mit adjak át neki. Esetleg egy QCoreApplication objektumra való pointert tudok adni neki, van egy olyan megérzésem, hogy azt nem szeretné.

Van valakinek tapasztalata ilyesmivel? Mit érdemes tennem. Minek a referenciáját adjam be a QDBusAbstractAdaptor konstruktorának?

A segítséget előre is köszönöm!
János

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Nem QWidgetet kér, hanem QObjectet, tehát szinte bármim jó neki kivéve ami nem QObjectből származik (pl QList és hasonlók).

A félreértést az okozza, hoyg QWidgetnél a parent kettős célt szolgál:

  1. Egyrészt szülő QObject értelemben, az lényegében csak ahhoz kell, hogy ha a szülő objektum megsemmisül, akkor autómatikusan felszabadítja a gyermek objektumot.
  2. Másrészt szülő QWidget értelemben, azaz a képernyőre rajzolás a szülő widgeten belül történik (ha nincs szülő, akkor új ablakban).

Általában tehát ha nem grafikus objektumokkal dolgozol, akkor a QObject csak arra kell, hogy a felszabadítás automatikus legyen (ezért ritka a delete a Qt programokban, míg new van egy rakás...).

Jelen esetben a kostruktor által várt QObject nem csak erre kell, hanem regisztrálja is azt az objektumot a DBus-ban.

Igazából sosem használtam DBus-t, nem egészen világos mit hova kell regisztrálni, stb, de itt egy példa:

http://doc.trolltech.com/4.4/qdbusadaptorexample.html

"...handing C++ to the average programmer seems roughly comparable to handing a loaded .45 to a chimpanzee."
-- Ted Ts'o