| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt] Программа "Hello Qt" |
| Автор: yngwie19 22.5.2009, 13:21 | ||
Здравсвуйте. Закончив изучение WinAPI решил взяться за QT. Вот пример простой программы для QT, в котором Я хочу провести аналогию структуры программы WinAPI
Теперь скажите правильно ли Я думаю: 1 и 2 - это понятно подключение библиотек. (в WINAPI также #include <windows.h> и т.д) 3 - точка входа в программу (в WINAPI это WinMain) 5 - вот тут мне не понятно зачем это. Проведите пожалуйста аналогию с WinPI 6 - Создаем окно класса Qlabel - текст (в WINAPI это CreateWindow("static","Сам текст")....) 7 - тут мы делаем созданное окно видимым (в WINAPI это ShowWindow(hwnd,SW_...) или в функции CreateWindow(стиль WS_VISIBLE) ) 8 - тут мы вызываем цикл обработки сообщений и возвращаем результат работы программы (в WinAPI это while(GetMessage(.....))(return msg.wParam)). Объясните пожалуйста правильно ли Я все понял и объясните по-подробнее про 5 пункт. P.S: Не знаю правильно ли Я считаю, что провожу такое сравнение, но все же считаю что если программа работает по Windows то по другому она работать не может. |
| Автор: yngwie19 22.5.2009, 14:28 |
| Любитель, Хммм. А Вы могли бы меня на правильный путь напрвить и поясните для чего нужен п.5 |
| Автор: kemiisto 22.5.2009, 14:44 |
yngwie19, наверное, Любитель, как бы говорит нам: не надо даже пытаться проводить аналогии там, где их нет и быть не может. WinAPI - штука специфическая. Qt ведь есть (в том числе) и на Mac OS X. Там другие API (Carbon, Cocoa). Пропасть между WinAPI и Cocoa API настолько огромна, что Qt добавляет дополнительный уровень абстракции. И вряд ли есть смысл искать аналогии Qt API с каким бы то ни было специфическим платформеннозависимым API... |
| Автор: yngwie19 22.5.2009, 15:02 |
| kemiisto, Ясно, ну ладно спасибо что предупредили, все-таки объясните смысл п.5 |
| Автор: kuzulis 22.5.2009, 15:20 | ||
| читать (хотябы) : "QT4: программирование QUI на С++" , Жасмин Бланшет, Марк Саммерфилд. Глава 1 . Первое знакосмтво. стр. 4 Добавлено через 3 минуты и 17 секунд читать Assistent :
|
| Автор: Любитель 22.5.2009, 15:37 |
Если говорить про "аналогию" - то смысла в этом пункте нет. Смысл объекта QApplication - читаем ассистент. Одна из основных - инкапсуляций основного ивент-цкила (QEventLoop). |
| Автор: yngwie19 22.5.2009, 16:05 | ||
: Объект Qt предназначен для управления всеми ресурсами приложения. Вот это определение дано в этой книге. Мне кажется оно совсем не понятно. Это что цикл обработки событий? |
| Автор: Любитель 22.5.2009, 16:45 |
| Посмотри документацию в ассистенте. ДУмаю станет понятней (по методам класса). |
| Автор: Denjs 23.5.2009, 13:40 | ||||
Если кратко отвечать на вопрос что такое в п.5. можно ответить с ехидством - "сейчас просто делай так, сынок, а поймешь - когда вырастешь" . А если подробно - то начните знакомиться с моделью "сигнал-слот" коя является "одной из центральных фич" QT. Там поймете и что такое цикл обработки событий (когда испущенные сигналы поочередно доставляются получателям- слотам которые "прилинкованы" в этим слотам), и, думаю, почему нельзя без QApplication и т.п. И не пытайтесь проводить аналогий с WinApi. по сравнению с QT - WinApi пошлейшее уродство. Это даже не сравнение "зергов и терран". "Зерги" и "терране" - одного уровня системы. QT и WinAPI - системы разного уровня. QT - полноценная ООП-система. WinAPI - функциональный подход, и даже убогий в определенном смысле... |
| Автор: Любитель 23.5.2009, 20:56 | ||
Это emit сигнала - берётся список прилинкованных слотов и вызываются (через метаданные) слоты. QEventLoop нужен для другого. Но, действительно, на первых порах, пожалуй, это не так важно. |
| Автор: yngwie19 23.5.2009, 22:58 |
| Всем спасибо буду разбираться. Подскажите с какой книги лучше всего начать. И еще вопрос, говорят что Qt4 сильно отличается от Qt3, так ли это? И вообще скажите какое будущее у Qt |
| Автор: Remiznik 24.5.2009, 01:03 |
| в том и прелесть QT не нужно море книг чтоб разобраться документация написана достойно и понятно ! но так чтоб немного вникнут Шлее по любой из QT хватит для начал !! а дальше только документация ! будушее QT это уже 4,5 .... бери бесплатно и наслаждайся творчеством =) |
| Автор: Denjs 24.5.2009, 17:02 | ||
гм.. а давайте пооффтопим? дабы восполнить мои пробелы в знаниях... А для пересылки событий сежду процессами разве не нужен Event Loop? (не класс QEventLoop, а имеено "an event loop") Технически, как я понимаю, в момент "app.exec();" запускается "цикл событий"(event loop) и в частности - начинают "доставляться" сигналы по соединениям созданным с типом "Qt::QueuedConnection" и/или сигналы направленные в объекты в других потоках. Я так однажды инициировал объект - я "с дуру" написал его инициацию так, что мне зачам-то нужен был работающий цикл событий (деталей уже не могу вспомнить) и думал как мне его инициировать, потому что без него я вообще ничего не мог сделать в программе. В результате я создал класс пустышку StartEventSenter, далее в main() - создал его экземпляр, приконнектил его к нужному мне объекту с типом соединения "Qt::QueuedConnection" и "емитировал"(emit) сигнал. Соответсвенно, до момента "app.exec()" ничто никуда не доставлялось. или я где-то запутался с своих моделях? |
| Автор: Denjs 24.5.2009, 17:21 | ||
начинать? читать Assistant) ну или читать Шлее или второе переиздание Бланшет. "НичоБольшеНет". Но помните - указанные книги - при всем своем объеме около 800+ страниц - это примерно 10-15% от данных что есть в родной справочной системе "assistant". Но и то и другое - это больше справочники, а не учебники. Зубрить - не вызубрите, имхо. и да, QT4 отличается от QT3. не кардинально, но сильно. Учите QT4. Последняя версия QT 4.5. |
| Автор: Любитель 24.5.2009, 18:32 | ||||
Для работы очередей сигналов само собой используется внутренне QEventLoop. Абсолютно верно.
QEventLoop это и есть абстракции над различными (ОС-зависимыми) реализациями ивент-цикла. app.exec - это практически просто обёртка над вызовом exec внутреннего инстанса QEventLoop. Но, кроме того, QApplication хранит, скажем, имя приложения, организацию и пр. Что тоже кое-где (QSettings тот же) используется.. |
| Автор: pan2004 25.5.2009, 16:16 | ||
Кроме того, эти книги постепенно устаревают по мере того, как Qt все более развивается. По скорости развития она вполне может превзойти .Net, и упоминаний о новых фичах(QWebKit, phonon, QScript, QXmlPatterns, да даже Graphics View) вы в книгах не встретите. Рано или поздно, причем скорее рано - привыкайте читать по англицки |