( tr3w | 2007. 04. 24., k – 16:33 )

Bocs a szünetért; "nyaraltam".

A megoldás egyszerűbb mint gondolnád:


connect( findList, SIGNAL( highlighted(const QString&) ), this, SLOT( slotFindList(const QString&) ) );

Tehát az "elem" nem kell.
Idióta dolog, de ez van.

Ez az őskövület signal-slot kezelés a qt legnagyobb hibája (szerintem), és nagyon reménykedtem benne, hogy a qt4-ből kidobják, de nem... Nyilván kompatibilitási okok miatt. Félek tőle sosem kerül ki.

A gondot az okozza, hogy ez az egész signal-slot rendszer nem a C++ keretein belül lett megoldva (egyszerűen azért, mert mikor a Qt fejlesztése kezdődött (1991), még nem is volt C++ szabvány, nem hogy szabvány követő fordító (mondjuk az most sincs. :) )). Ha belenézel a generált moc_* fájlokba, elég csúnya dolgokat láthatsz, és kb fogalmad lesz, hogy hogyan is működik ez az egész. Valójában string manipulációkkal találja meg a connect fv a megfelelő signal-slot párokat. Ezért nem ad fordítás közben hibaüzenetet.

C++-os megoldás persze van (ld libsigc++, boost.signals, stb.), de úgy tűnik a qt-ban ez marad még jó darabig.

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