DLL z GUI - jakiej biblioteki użyć

0

Cześć spotkałem się ostatnio z przykrym problemem. Otóż Mam do napisania wtyczkę do IDE (Keil), która ma symulować pewne urządzenie. Sam do pisania jakichkolwiek GUI zawsze używałem Qt i chciałem DLLkę napisać przy jego zastosowaniu również. Odpowiedź z support'u na pytanie jak się ma Qt do ich Keila brzmiało tak, że oni wspierają jedynie MFC, ale z Qt nie powinienem mieć problemu. Problem jednak jest i to spory. Niestety muszę napisać cały widok od nowa, bo w Qt nie da się zrobić iteraktywnego GUI do dll ze względu na ograniczenie wynikające z istnienia klasy QApplication oraz pętli zdarzeń (przynajmniej nie da się tego zrobić łatwo i ładnie).

 Stąd pytanie, czy ktoś kiedyś pisał DLL z interfejsem graficznym i jakiej biblioteki graficznej mogę użyć do tego? MFC i WinAPI wolałbym nie używać, ponieważ osobiście mi się nie podobają. Biblioteka powinna być dość elastyczna - najlepiej zorientowana obiektowo oraz pozwalająca na tworzenie własnych widgetów (rysowanie pędzlem + wypełnianie kształtów).

Z góry dziękuję za pomoc. Oczywiście bibliotek jest sporo do wykorzystania, ale tym razem zależy mi, żeby ktoś potwierdził jej użyteczność w zastosowaniu do pisania bibliotek współdzielonych.

Pozdrawiam :)

2

Problem jednak jest i to spory. Niestety muszę napisać cały widok od nowa, bo w Qt nie da się zrobić iteraktywnego GUI do dll ze względu na ograniczenie wynikające z istnienia klasy QApplication oraz pętli zdarzeń (przynajmniej nie da się tego zrobić łatwo i ładnie).

Ale problem z pętlą komunikatów nie jest specyficzny dla Qt więc tak czy siak będziesz go musiał jakoś rozwiązać.

0

Nie wiem dokładnie jak to wygląda w innych frameworkach, ale największy problem z pętlą zdarzeń w Qt jest wymóg, że musi działać w głównym wątku. Po przeniesieniu do innego wątku odpalane GUI po prostu nie reaguje na akcje użytkownika. Jeżeli podobnie jest w innych frameworkach, to faktycznie będę musiał pisać w MFC.

1

Spróbuj zrobić tak:

  • aplikacja (Keil) -> DLL wtyczki -> proces potomny GUI / Qt

Z Qt na pewno się da tylko trzeba pokombinować. Najwięcej roboty będziesz miał tu z komunikacją IPC między DLL a procesem potomnym, zajrzyj tutaj:

IPC
http://doc.qt.io/qt-5/ipc.html
http://doc.qt.io/qt-4.8/examples-ipc.html
http://www.slideshare.net/mariusbu/ipc-with-qt

Ukrycie ikonki aplikacji
http://stackoverflow.com/questions/4055506/qt-hide-taskbar-item

1

Udało mi się rozwiązać problem :) Dla wszystkich osób, które będą chciały kiedyś z tego skorzystać. wywalilem GUI do oddzielnego wątku, ale używając klasy std::thread zamiast QThread z biblioteki Qt :) Pozdrawiam i dzięki za pomoc i pomysły :)

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