2010/01/14

Ja vs QT + Eclipse + MinGW

Przez uczelnię zmuszony zostałem z porzucenia znanego i lubionego przeze mnie Visual C# 2008 Express z Windows.Forms na rzecz Eclipse + QT4 + MinGW. Pomyślałem, hmm: co może być w używaniu tego trudnego? Skoro wszystkie te elementy istnieją na rynku programistycznym już od paru lat... Nic bardziej mylnego. Zaczynajmy...

Instalacja
Wydawałoby się, że to najprostsza rzecz, zainstalować edytor, kompilator, SDK a na koniec coś, co zintegruje nam SDK z edytorem. Sama instalacja jest trywialna, gdy już ma się wszystkie dostępne elementy, ale ich znalezienie. O ile Eclipse, QT-Framework. QT-Eclipse-Integrator dostępne są wprost o tyle MinGW4.4.0 to inna para kaloszy. Na szczęście TrollTech udostępnił właściwą wersję MinGW na swoim serwerze FTP. Szkoda tylko, że nie dorzucili tego adresu do miejsca pobierania samego Frameworka.

Użyteczne adresy

Pierwszy projekt
Po zainstalowaniu wszystkiego, Eclipse się uruchomił, wybrałem katalog przestrzeni roboczej i przystąpiłem do pracy. Nowy projekt -> QT Gui, podałem nazwę i wygenerowało mi podstawę, którą później miałem rozwijać. No właśnie. W QT wszystko robi się inaczej niż w .NET. Eclipse udało mi się jeszcze jakoś okiełznać, ale... Otóż QT-Designer zintegrowany z Eclipse pozostawił nieco do życzenia. Otóż to, co znałem z VS2005/2008, że klikamy na obiekt dwukrotnie i generowane jest zdarzenie onclick() tutaj po prostu nie istnieje. Co więcej, edycja "Sygnałów" nie umożliwia wybrania własnej metody obsługi zdarzenia. Okazuje się, że w QT takie rzeczy trzeba napisać ręcznie.

W klasie głównej mojego projektu (plik [projekt].h) zmuszony byłem dodać
class [projekt]{
...
public slots:
void on_[element]_[sygnał]();
...
}
Implementację natomiast umieściłem w pliku [projekt].cpp
...
void [projekt]::on_[element]_[sygnał]()
{
// do Something
}
...
Jeśli myślicie, że reszta poszła już z marszu to, jesteście w błędzie... ale to wynikało raczej z mojej awersji do języka C++, który do najwygodniejszych języków niestety nie należy. Konstrukcja cos.cos()->cos().cos to jednak nie jest to, co tygryski lubią najbardziej.


Wnioski
QT, to bardzo złożony ale jednocześnie dobrze przemyślany framework, który z wersji na wersję staje się prostszy w wykorzystywaniu. Problemem są narzędzia, które mogłyby jednak nieco tę współpracę ułatwiać. Może kiedyś dotrą do poziomu jaki osiągnął MS tworząc VS2005/2008 a kiedy to się stanie to na pewno będzie częściej wybierane jako środowisko wytwarzania aplikacji.