Qt Creator vs Visual Studio 2013

0

Cześć,

Postanowiłem bliżej przyjrzeć się nowemu VS2013 i przypomnieć sobie programowanie w C# przerabiając jeden z programów napisanych w C++ Qt. Już na samym początku byłem zmuszony do stosowania hacków żeby osiągnąć z grubsza podobne efekty jak w Qt Creatorze.

Zebrało mi się plusy i minusy obu, bo nieźle się zdenerwowałem na VS.

Qt Creator:
Plusy:

  • prostsze stosowanie layoutów, które same się skalują względem okna głównego.
  • proste kolorowanie pojedynczych znaków labela.
  • lepsze skalowanie czcionki w programach (wyjaśnię przy VS)
  • ustalenie z automatu max i min size dla okna poprzez wyszczególnienie na wysokość i szerokość.
  • dostarczona możliwość wyboru opcji statusTip i klawisza skrótu dla widgeta out of box.
  • wiem, że to cecha języka jednak podział na implementację i nagłówek dla klas sprawia, że są czytelniejsze (dla mnie rzecz jasna)

Minusy:

  • jednak layouty są trochę zbyt sztywne i dziwnie się czasami steruje rozmiarami widgetów.
  • brak implementacji destruktora w plikach klasy przez co trzeba dopisywać.
  • jednak to C++ czyli mogą pozostać niewykryte wycieki pamięci, ale to nie wina IDE.

VS2013
Plusy:

  • znakomite inteliSense, dużo możliwości konfiguracji.
  • w celu dodania ikony programu (exeka) nie trzeba dodawać pliku konfiguracyjnego, tylko można to sobie wyklikać.
  • prostsze definiowanie tabel jako widżetów. Można sobie wyklikać kolumny i rzędy, chociaż w Qt nagłówki to zwykła QStringLista.

Minusy:

  • dlaczego nie można po ludzku zdefiniować sobie na sztywno kontrolek tylko trzeba się pałować z anchorami. Może o czymś nie wiem ale ustawienie czegoś takiego jak central widget załatwiłoby raz na zawsze sprawę prawidłowego skalowania elementów interfejsu. W Qt Creatorze ustawia się siatkę jako coś takiego i cała reszta kontrolek skaluje się odpowiednio do rozmiaru okna i wszystko gra.
  • choćbym nie wiem jaką czcionkę dał w labelach to zawsze będą wyraźne różnice pomiędzy odległościami pomiędzy literami, jeżeli mamy jeden label długi, a drugi znaczni krótszy. No kurde czego bym nie zrobił zawsze, ale to zawsze czcionka się rozjedzie. Żeby nie było: ustawiałem justowanie, dopasowanie względem lewej, prawej krawędzi itd... i nic!
  • kolejny minus jak diabli to brak natywnego wsparcia dla kolorowania pojedynczych liter w labelach. Trzeba bawić się w hacki z RichTextBoxami.
  • dlaczego nie mogę sobie wyklikać akcji dla mouseHover out of box? Wiecie jak to ułatwia ustawienie opisów na paskach statusu? Ja wiem, że można w kodzie to zrobić, ale po co pisać dodatkowe zdarzenia jak można to zrobić szybciej? To samo dotyczy klawisza skrótu ale może się nie dopatrzyłem.

To tyle co na razie zauważyłem. Z C# nie miałem styczności już dobre 2 lata, ale dzisiaj na prawdę się zdenerwowałem, dlatego daję to do dzialu Flame.

I czekam na opinie:)

0

Przecież ty porównujesz toolkit Qt z Windows Forms, a nie IDE Qt Creator z Visual Studio.

0

Ale sam przyznaj, że takie rzeczy jak klawisze skrótu czy status tip można było spokojnie dodać, albo definiowanie położenia kontrolek zrobić bardziej po ludzku (ocena obiektywna). Ale fakt QLabel to zwykły HTML i arkusz stylów i w porównaniu z nim label z C# to bieda :)

0

Możesz użyć WPF, jeżeli taki styl jest ci bliższy.

0
  • dlaczego nie można po ludzku zdefiniować sobie na sztywno kontrolek tylko trzeba się pałować z anchorami.
    Sztywno względem czego?
    Anchor informuje, względem której krawędzi lub narożnika ma być ta „sztywność”.

Może o czymś nie wiem ale ustawienie czegoś takiego jak central widget załatwiłoby raz na zawsze
A widziałeś Dock?

  • kolejny minus jak diabli to brak natywnego wsparcia dla kolorowania pojedynczych liter w labelach. Trzeba bawić się w hacki z RichTextBoxami.
    No to jest raczej overkill.

choćbym nie wiem jaką czcionkę dał w labelach to zawsze będą wyraźne różnice pomiędzy odległościami pomiędzy literami
Que?

0

Cześć.

Sztywno względem czego?
Anchor informuje, względem której krawędzi lub narożnika ma być ta „sztywność”.

Ale czasami, kiedy ma się dużo kontrolek, trzeba osobno ustawiać każdy anchor i łatwo o pomyłkę, a w Qt Creatorze załatwia to automatyczne rozmieszczanie obiektów względem rozmiaru okna, w którym się znajdują. Wystarczy pogrupować je w odpowiedni layout. Owszem, w VS też są layouty jednak skalowanie trzeba robić ręcznie.

A widziałeś Dock?

To częściowo rozwiązuje mój problem, bo można zadokować kontrolkę w table layoucie ale trzeba uważać żeby zmieniał się rozmiar tylko tej kontrolki, której ma się zmieniać. Muszę się temu bliżej jeszcze przyjrzeć, bo może efekt będzie taki sam tylko wykonanie inne.

No to jest raczej overkill.

Albo cecha języka. Klasa QLabel korzysta z HTML'a i CSS'a, a klasa Label w .NET'cie to nie wiem z czego, ale jest to problem, bo trzeba kombinować. Nie podoba mi się.

choćbym nie wiem jaką czcionkę dał w labelach to zawsze będą wyraźne różnice pomiędzy odległościami pomiędzy literami

Que?

No tak jest. Mam sobie dwa labele. Jeden to 'Typ słupa', a drugi to 'Nazwa konstrukcji'. Choćbym nie wiem jak regulował justowanie czy zmieniał czcionki to zawsze będzie widać, że w krótszym tekście odstępy pomiędzy poszczególnymi literami będą większe niż w dłuższym. Tak jakby kurcze było włączone "justowanie względem najdłuższego labela". To wygląda mniej więcej tak (niestety screena nie dam, ponieważ jestem w pracy):

T y p s ł u p a:
Nazwa konstrukcji:

I tak z każdą czcionką, bo myślałem, że to kwestia czcionki.

0

T y p s ł u p a:
Nazwa konstrukcji:
Coś mocno pomieszałeś.

0

No właśnie nie wydaje mi się.
Do obiektu TableLayoutPanel, do jednego wiersza wstawiłem label 'Typ słupa', a do drugiego, pod spodem, wstawiłem label 'Nazwa konstrukcji'
Oba labele wyrównałem anchorem do prawej strony kolumny i tyle.

<image>6fc0ca46b7.png</image>

Może to jest specyfika tej czcionki ale w Qt Creatorze (szkoda, że w pracy nie mam zainstalowanego to bym dał screena dla porównania) odległości pomiędzy znakami są równiejsze.

Tutaj czcionka to MS Sans Serif 10.

1 użytkowników online, w tym zalogowanych: 0, gości: 1