Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Martin - ViPEr*CZ* 14 Června 2008, 16:21:45

Název: Qt a connect + SLOT [vyřešeno]
Přispěvatel: Martin - ViPEr*CZ* 14 Června 2008, 16:21:45
Další lahůdka :D

Mám metodu:

Kód: [Vybrat]
connect(pushButton, SIGNAL(released()), this, SLOT(Pokus()));
a v objektu co představuje this jsem definoval:

Kód: [Vybrat]
public slots: void Pokus();
Neuvěřitelné je to, že třída this dědí z QDialogu a slot se hledá v základní třídě a ne v té mé zděděné takže to vypisuje něco jako

nenalezen slot QDialog::Pokus

V příkladech se, ale tato syntaxe normálně používá (nezkoušel jsem kompilaci). Tak nevím co je kde špatně.
Název: Re: Qt a connect + SLOT
Přispěvatel: Martin - ViPEr*CZ* 14 Června 2008, 17:10:59
Kód: [Vybrat]
QObject::connect(pushButton_4, SIGNAL(released()), x, SLOT(SetEditLine(0)));
Tak todle je taky záhada... SLOT SetEditLine s parametrem neprojde a bez parametru to funguje. Nechápu.
Název: Re: Qt a connect + SLOT
Přispěvatel: Martin - ViPEr*CZ* 14 Června 2008, 19:58:41
Tak je potřeba:

Kód: [Vybrat]
class Ui_Dialog : public QWidget
{
Q_OBJECT

a ten prefix Q_OBJECT je tam právě potřeba jinak nefungují deklarace slotů. Nic méně mi kompilátor nepobíral, když jsem si to tam doplnil. Prapodivné. Vyřešilo to, když jsem v KDevelop dal přidat novou třídu. Tu nadědil s QWidget. Vše pomocí wizardu. A dal kompilovat. Nic víc jsem nikde neměnil. A ejhle Q_OBJECT najednou klidně prošel... no je to záhadný. Třídu jsem zase odebral a teď to už funguje bez toho a jak potřebuju.
Název: Re: Qt a connect + SLOT [vyřešeno]
Přispěvatel: Martin - ViPEr*CZ* 14 Června 2008, 21:30:34
A tu je výsledný kód sloužící pro začátečníky:

http://vipersoftware.net/linux/download/src/kalkulacka.tar.gz