Znalazłem sprzeczne odpowiedzi w Internecie - niektórzy twierdzą, że tak, niektórzy twierdzą, że tak nie jest. Nie mogłem też znaleźć żadnych szczegółów w oficjalnej dokumentacji Qt. Czy Qt ma powiązania C, czy też nie?Czy Qt ma interfejs C?
Odpowiedz
Krótka odpowiedź: nie.
Jeśli potrzebujesz wszechstronnego zestawu narzędzi GUI dla języka C, możesz użyć GTK +.
Aby używać Qt, musisz musi mieć mieć kompilator C++. Ale to nie znaczy, że twoja "logika aplikacji" nie może być napisana w C, skompilowana z kompilatorem C i starannie połączona z częścią C++ (GUI z Qt). Ta logika aplikacji może być ogólna, możliwa do połączenia z innymi plikami wykonywalnymi (pure-C, mixed C/C++, itd.) Wszystko zależy od tego, czego potrzebujesz.
Qt jest dobre dla C++, choć i to jest dobry powód, aby zdecydować, używając C++ dla danego projektu, nawet jeśli nadal chcesz zachować części w C.
Nie sądzę, że tak. Qt jest zawsze opisywany jako "biblioteka klas" i wymaga kompilatorów C++ do zbudowania. Możesz spróbować napisać/znaleźć DLL/interfejs, który będzie owijać wokół QT i dostarczać API do warstwy C.
Nr Qt to C++. Ale możesz napisać wszędzie kod w stylu C, który nie współdziała/tworzy elementy GUI i kompiluje całość z wybranym kompilatorem C++.
Kiedyś wiążącej nazywa QTc, ale szukają dla niego ujawnia this thread:
Od Richard Dale:
kiedyś utrzymać powiązania C, które zostały wykorzystane przez Objective-C i Qt # wiązań. Ale biblioteka Smoke jest znacznie lepsza, chociaż nie jest wiązaniem C, a I odrzuciła wiązania QtC, aby użyć dymu.
Smoke is here. Nie udało mi się znaleźć wyraźnego odniesienia do wiązań QtC w dowolnym miejscu, choć pamiętam o nich.
Zawsze możesz użyć kompilatora C++, które po prostu przekłada C++ do C, a następnie wywołać zniekształcone nazwy to generuje, itd :-)
Niestety nie, ale można kształtować swój program jako zestaw bibliotek achiving swoje logiki biznesowej i zapisz je w C, możesz użyć małego C++ do wiązania tego, co napisałeś jako bibliotekę z GUI używając QT.
Jest to dobre podejście również dlatego, że później można ponownie użyć biblioteki i wdrożyć wiele innych front-endów z różnymi zestawami narzędzi lub językami!
Qt używa kompilatora Meta Object (MOC), aby magiczne działanie sygnału i szczeliny działało (na przykład wywoływanie wywołań funkcji na podstawie sygnału użytkownika i definicji szczeliny). Tak więc Qt nie jest plikiem wykonawczym C++, ale jest to naprawdę własna składnia Qt, która jest podobna do C++, ale z sygnałami i gniazdami. To sprawia, że "zewnętrzny" c "" jest bezużyteczny.
- 1. Czy odtwarzacz multimedialny VLC ma interfejs C#?
- 2. Interfejs Qt dla istniejącego projektu C++
- 3. Czy crashlytics ma publiczny interfejs API?
- 4. Czy Microsoft SkyDrive ma interfejs API?
- 5. Czy Google ma podstawowy interfejs API wyszukiwania?
- 6. Czy interfejs API Google+ ma limit godzinowy?
- 7. Czy ciąg ma zdalny interfejs API?
- 8. Czy sourceforge.net ma interfejs API wyszukiwania?
- 9. Czy Qt obsługuje interfejs API Bluetooth systemu Windows?
- 10. Czy można naśladować interfejs Go w C/C++?
- 11. C++ Błąd w Qt: ma inicjator, ale niekompletny typ
- 12. Czy C++ ma uporządkowane hash?
- 13. Czy Objective-C ma odbicie?
- 14. C realizacja nieruchomość # interfejs
- 15. Qt C++ biblioteki wideo
- 16. Czy biblioteka rysunkowa qt-embedded-linux ma stały punkt?
- 17. Czy Qt ma coś równego modułowi Boost's assign?
- 18. Czy Qt ma sposób na znalezienie obwiedni obrazu?
- 19. Czy Scala ma dobry interfejs API daty i godziny?
- 20. Czy solr ma interfejs API do odczytu pliku solr schema.xml?
- 21. Czy interfejs użytkownika Kendo ma odniesienie do CSS?
- 22. Czy watchOS 2 ma interfejs API dla Force Touch?
- 23. Interfejs C# - R
- 24. Hierarchia w Qt [C++]
- 25. Interfejs Dziedziczenie w C++
- 26. Samouczek Qt webkit dla C++
- 27. Qt/C++ Obsługa błędów
- 28. Qt/C++: skutecznie
- 29. Domyślny interfejs ustaw w C#
- 30. Czy GCC ma GUI?
... zły pomysł: kiedy będziesz pracować z innym kompilatorem, może się okazać, że nazwa "mangling" jest inna. A może jest gwiezdny głód? – Dacav
Jeśli po prostu "skompilujesz" kod C++ (Qt) do C, od tego momentu możesz po prostu traktować wygenerowany kod C jako "źródło". Jeśli nie wrócisz, aby go zregenerować, kompilator użyty do wygenerowania go nie ma już znaczenia. To powiedziawszy, ta odpowiedź nie powinna być traktowana zbyt poważnie, ale uważam, że jest to jednak poprawna odpowiedź. –
Po co używać zniekształconych nazw? Każdy rozsądny kompilator C++ powinien rozumieć instrukcję "extern" C "', szczególnie gdy kompiluje się do źródła C. (Btw, który kompilator C++ może emitować kod C?) – schoppenhauer