Jeśli wszystkie trzy niezależne aplikacje są napisane z Qt, a ty masz ich źródło, powinieneś być w stanie je zunifikować tylko poprzez rodzicielstwo obiektów GUI w Qt.
http://qt-project.org/doc/qt-4.8/objecttrees.html
http://qt-project.org/doc/qt-4.8/widgets-and-layouts.html
http://qt-project.org/doc/qt-4.8/mainwindows-mdi.html
Jeśli nie masz dostępu do nich w ten sposób, to co mówisz jest jak partia 3rd zarządzania oknami. Jest to trochę jak pisanie powłoki, takiej jak Eksplorator Windows, która manipuluje stanem i rozmiarem innych aplikacji okienkowych.
Użyj programu typu Spy ++ lub AutoIt Spy dla systemu Windows i podobnych programów dla innych systemów operacyjnych, a także poznaj oznaczenia identyfikacyjne okien, które chcesz kontrolować, takie jak klasa, tytuł okna itp.Lub możesz uruchomić exe siebie w rodzaju rzeczy.
http://qt-project.org/doc/qt-5.1/qtcore/qprocess.html#startDetached
Następnie za pomocą systemu operacyjnego połączenia zależne kontrolowania okna. Biblioteka Qt nie ma tych rzeczy wbudowanych w okna innych firm, tylko dla tych pod uruchomioną QApplication. Istnieje wiele przykładów robienia takich rzeczy przez AutoHotKey lub AHK. Jest to język skryptowy, który jest przeznaczony do zautomatyzowania wielu rzeczy w środowisku Windows, i jest też port dla Maców (chociaż sam nie testowałem portu Mac).
Więc w końcu szukasz na znalezienie okno prawdopodobnie z rozmowy jak ta:
#include <windows.h>
HWND hwnd_1 = ::FindWindow("Window_Class", "Window Name");
LONG retVal = GetWindowLongA(hwnd_1, GWL_STYLE); // to query the state of the window
następnie zmieniać położenie i stan okna tak:
::MoveWindow(hwnd_1, x, y, width, height, TRUE);
::ShowWindow(hwnd_1, SW_SHOWMAXIMIZED);
Można nawet narysuj widżety na kontrolowanych oknach, jeśli ustawisz flagi okienne poprawnie dla okien, którymi manipulujesz.
transparent QLabel with a pixmap
Cannot get QSystemTrayIcon to work correctly with activation reason
niektórych pułapek, które pojawią się w systemie Windows, gdy robi to wszystko, jest ustaleniu dziwactwa okien UI kiedy ustawić wyświetlanie skalowania różni się od tego, co można się spodziewać, a jeśli chcesz grać ładnie za pomocą paska zadań i obsługiwać wszystkie okna modalne manipulowanych programów.
Ogólnie rzecz biorąc, jest to możliwe. Qt stworzy przyjemny interfejs do wykonywania tych poleceń, ale na koniec patrzysz na dużo pracy i debugowania, aby uzyskać go w pięknym, niezawodnym menedżerze okien.
Nadzieję, że pomaga.
Przede wszystkim dziękuję mi odpowiedzieć, zacząłem myśleć, że nikt nie może mi odpowiedzieć. Nie mam dostępu do kodu źródłowego. 2 Qs: co wiesz o QWidget :: createWindowContainer(); funkcja, czy może wykonać całą pracę? 2. jeśli twoje rozwiązanie jest wymagane dużo portowania do okien - może to nie jest warte - a skróconym rozwiązaniem jest napisanie aplikacji w .NET dla Windows i nie wiem dla Linux-Ubuntu? – RRR
Nie użyłem wcześniej 'createWindowContainer'. Wygląda na to, że jest to skrót do uaktualniania dowolnego 'QWindow', takiego jak scenegraph lub Qt Quick lub okno OpenGL, aby mieć pełną dekorację okna, która działa z innymi QWidgetami. Wygląda na to, że nie może po prostu wziąć żadnego identyfikatora HWND ... http://blog.qt.digia.com/blog/2013/02/19/introducing-qwidgetcreatewindowcontainer/ – phyatt
Obsługa okien nie jest zbyt trudna. To wymaga badań i pracy, ale wznoszenie i manipulowanie nimi w systemie Windows nie powinno zająć więcej niż kilka godzin. Nie zrobiłem tego jeszcze w Linuksie i OSX-ie, ale powinno być po prostu kwestia uzyskania właściwych połączeń. – phyatt