--- news://freenews.netfront.net/ - complaints: ne...@netfront.net ---
Korzystając z okazji, też bym się chętnie dowiedział czegoś o tym Qt.
Ściągnąłem SDK, ale okazało się, że nie lubi mojego systemu
operacyjnego, więc musiałbym w domowym komputerku
zainstalować Linuksa albo Windows - jedno i drugie odpada.
Więc nie mogę samemu sprawdzić... A chciałem się dowiedzieć,
czy mechanizm slotów i sygnałów w Qt pozwala na podłączenie
metody z jakiejś klasy do sygnału w np. buttonie Qt,
wtedy gdy modyfikacja kodu źródłowgo owej klasy nie jest
możliwa?
Pozdrawiam.
Tak z czystej ciekawości jeśli nie windowsa lub linuksa ma Pan
zainstalowanego to na jakim systemie smiga pana komputer?
Problem w tym. że on nie śmiga...
Mam Windows 2000, czego mógł Pan z łatwością się dowiedzieć
sprawdzając pole X-HTTP-UserAgent w moim poście.
Podczas próby instalacji SDK Qt dostałem komunikat,
że nie działa ono na Windows 2000.
Na Windows 7 mnie nie stać...
Linuksa nie instaluję, bo jestem leniwy i mi się nie chce...
Pozdrawiam
Problem w tym. �e on nie �miga...
Mam Windows 2000, czego m�g� Pan z �atwo�ci� si� dowiedzie�
sprawdzaj�c pole X-HTTP-UserAgent w moim po�cie.
Podczas pr�by instalacji SDK Qt dosta�em komunikat,
�e nie dzia�a ono na Windows 2000.
Na Windows 7 mnie nie staďż˝...
Linuksa nie instalujďż˝, bo jestem leniwy i mi siďż˝ nie chce...
Bez pracy nie ma ko�aczy. Instalacja linuksa to znowu nie taka wielka
filozofia. Ja mam windowsa xp i suse 11.0. Qt pod suse smiga az mi�o. Wydaje
mi si� ze bez instalacji linuksa si� nie obejdzie:-(. Dzi�kuj� za
zaspokojenie mojej ciekawo�ci. Mi�ej niedzieli �ycz�!!
> Więc nie mogę samemu sprawdzić... A chciałem się dowiedzieć,
> czy mechanizm slotów i sygnałów w Qt pozwala na podłączenie
> metody z jakiejś klasy do sygnału w np. buttonie Qt,
> wtedy gdy modyfikacja kodu źródłowgo owej klasy nie jest
> możliwa?
zerknij sobie na post z forum
"http://forum.ubuntu.pl/showthread.php?t=81231&highlight=[qt4]+w%C4%85tki+progressbar"
niejakiego "adrian5632" wyslany dnia: "28-08-2008, 15:17" . Masz tam
bardzo prosty, ale kompletny przyklad uzycia slotow i sygnalow.
Może i tak, ale SDK nie da się zainstalować na Win 2000.
> Biblioteka jest dostepna na wszsystkie najwazniejsze platformy(
> informacje ze stronyhttp://qt.nokia.com/- Windows, Mac, Linux/X11,
> embedded Linux, Windows CE and Symbian)
>
> > Więc nie mogę samemu sprawdzić... A chciałem się dowiedzieć,
> > czy mechanizm slotów i sygnałów w Qt pozwala na podłączenie
> > metody z jakiejś klasy do sygnału w np. buttonie Qt,
> > wtedy gdy modyfikacja kodu źródłowgo owej klasy nie jest
> > możliwa?
>
> zerknij sobie na post z forum
> "http://forum.ubuntu.pl/showthread.php?t=81231&highlight=[qt4]+w%C4%85tki+progressbar"
> niejakiego "adrian5632" wyslany dnia: "28-08-2008, 15:17" . Masz tam
> bardzo prosty, ale kompletny przyklad uzycia slotow i sygnalow.
Dziękuję. Nie widzę tam jednak przykładu, który bym uznał za
kompletny.
Zadam moje pytanie w innej formie. Wiem, że w Qt można zrobić tak:
class Test : public QObject
{
Q_OBJECT;
public slots:
void do_something() const { }
};
QPushButton btn("click me");
Test t;
connect(&btn, SIGNAL(clicked()), &t, SLOT(do_something()));
A ja chcę wiedzieć czy można też tak:
class Test
{
public:
void do_something() const { }
};
QPushButton btn("click me");
Test t;
connect(&btn, SIGNAL(clicked()), &t, SLOT(do_something()));
oraz tak:
void do_something() { }
QPushButton btn("click me");
connect(&btn, SIGNAL(clicked()), SLOT(do_something()));
Pozdrawiam.
>> Biblioteka jest dostepna na wszsystkie najwazniejsze platformy(
>> informacje ze stronyhttp://qt.nokia.com/- Windows, Mac, Linux/X11,
>> embedded Linux, Windows CE and Symbian)
>>
>>> Więc nie mogę samemu sprawdzić... A chciałem się dowiedzieć,
>>> czy mechanizm slotów i sygnałów w Qt pozwala na podłączenie
>>> metody z jakiejś klasy do sygnału w np. buttonie Qt,
>>> wtedy gdy modyfikacja kodu źródłowgo owej klasy nie jest
>>> możliwa?
>>
>> zerknij sobie na post z forum
>> "http://forum.ubuntu.pl/showthread.php?t=81231&highlight=[qt4]+w%C4%85tki+progressbar"
>> niejakiego "adrian5632" wyslany dnia: "28-08-2008, 15:17" . Masz tam
>> bardzo prosty, ale kompletny przyklad uzycia slotow i sygnalow.
>
> Dziękuję. Nie widzę tam jednak przykładu, który bym uznał za
> kompletny.
Faktycznie, nie byl tam kompletny przyklad. Za szybko przelecialem to i
uznalem, ze jest tam wszystko.
> Zadam moje pytanie w innej formie. Wiem, że w Qt można zrobić tak:
>
> class Test : public QObject
> {
> Q_OBJECT;
> public slots:
> void do_something() const { }
> };
>
> QPushButton btn("click me");
> Test t;
> connect(&btn, SIGNAL(clicked()),&t, SLOT(do_something()));
>
> A ja chcę wiedzieć czy można też tak:
>
> class Test
> {
> public:
> void do_something() const { }
> };
>
> QPushButton btn("click me");
> Test t;
> connect(&btn, SIGNAL(clicked()),&t, SLOT(do_something()));
>
> oraz tak:
>
> void do_something() { }
>
> QPushButton btn("click me");
> connect(&btn, SIGNAL(clicked()), SLOT(do_something()));
Wg mojej wiedzy, to wszystkie klasy ktore maja obslugiwac sygnaly i
sloty, musza miec wklepane makro "Q_OBJECT".
Po drugie, to przy deklaracji slota, trzeba go poprzedzic informacja, ze
to jest slot, czyli:
private slots:
void slot();
Po zdefiniowaniu takiego slota, mozna go potemm uzywac jako slot, a
takze jako zwykla funkcje, czyli nie tylko, gdy wywola go jakis sygnal.
Jak znajde troche czasu, to sprobuje ci zrobic jakis prosciutki i
kompletny przyklad slotow i sygnalow, ale nie moge ci tego
zagwarantowac, bo mam sporo swojej roboty :/.
Jak ktos jest w tym bardziej zorientowany, to niech mnie poprawi.
Cały bajer polega (a przynajmniej ma polegać) na tym,
że nie wiedząc jak to działa łatwo się z tego korzysta.
Nie wiem czy warto wnikać w szczegóły implementacyjne,
osobiście nie znam ich. Jakby ktoś chciał się z tym zapoznać,
to nie wiem... może na początek przeczytać kod wygenerowany
przez meta object compiler? Na pierwszy rzut oka ten kod nie
wygląda strasznie.
Prawdopodobnie dział to tak, że meta object compiler analizując
makra w plikach nagłówkowych dopisuje najzwyklejszy kod w C++
w którym to są wywoływane funkcje obsługi sygnałów. Czyli mechanizm
jeszcze prostszy niż wywołania wirtualne. Ale nie wiem czy tak
jest, to tylko moje domysły :)
Pozdrawiam
Nie mozna. Klasa Test musi dziedziczyc po QObject oraz posiadac makra,
ktorych uzywa "moc" do generowania kodu (Q_OBJECT i signals,
slots, ...)
Wez troche starsze. QT 4.5.2 dziala na W2000 i QtCreator 1.1.8 tez.
SDK 2009.1 chyba tez, choc nie jestem pewien.
Mozna je znalezc na ftp://ftp.qtsoftware.com/.