2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Qt как реализован?
Сообщение11.04.2010, 19:43 


31/08/09
183
Друг сказал, что Qt это фактически одни классы, которые используют функции винапи. Но ведь в винапи нет функций которые выводят изображение в пунктах меню. Скажите ваше мнение.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение11.04.2010, 21:40 


06/04/09
156
Воронеж
Классы, макросы, шаблоны и всякие ифдефы. :)

mycoding в сообщении #308565 писал(а):
Но ведь в винапи нет функций которые выводят изображение в пунктах меню.

Аха, рисует видать ИИ, который с кутэ распространяется. Можно еще с ОпенГЛ и ДиректХ поиграться.

П.С. О чем вообще вопрос? Качните и посмотрите - исходники там есть...

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение12.04.2010, 11:12 


31/08/09
183
ИИ - это что?

Конечно это другой вопрос но всё же.
А как например реализовано окошко которое появляется выше трея в мэил агент.
Там же используется не стандартное окно, а используется свой стиль.


И как реализованы окна без рамок, произвольной формы?

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение12.04.2010, 13:05 
Заслуженный участник
Аватара пользователя


01/08/06
3053
Уфа
mycoding, Вы как-то неправильно понимаете, что такое WinAPI. Это совокупность всех прикладных программных интерфейсов ОС Windows, и хотя теоретически можно использовать функции этой ОС в обход WinAPI, так делают только всякие там хакеры и вирусописатели. Драйверы и вообще нутро Windows я тут не затрагиваю, там свои программные интерфейсы. Как и OpenGL и DirectX --- можно спорить о том, считать ли их частью WinAPI или нет. Но я Вас уверяю, и "нестандартные окошки мэил агента", и изображения в пунктах меню выводятся именно через WinAPI. Вы, вероятно, имели в виду какую-нибудь надстройку сверху над WinAPI (MFC?), в надстройке --- да, не всё возможно. Кстати, Qt --- сама по себе одна из таких надстроек, только ещё и кроссплатформенная. Так что не думаю, что Qt использует исключительно MFC. Хотя, возможно, чем-то из MFC пользуется...

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение12.04.2010, 14:10 


31/08/09
183
Просто у меня не получается найти в коде, где они там
это объявляют, а то так хочется свою мини-Qt написать.
Например в качестве курсовой

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение13.04.2010, 15:04 


04/02/08
325
Буково
Цитата:
хочется свою мини-Qt написать.
Например в качестве курсовой

Ну вы загнули... Попробуйте сначала что-нибудь попроще. Например, посмотрите исходники motif, и попробуйте создать подобную, но упрощенную, оконную библиотеку.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение17.04.2010, 14:36 
Заслуженный участник


26/07/09
1559
Алматы
2mycoding
Читайте winapi sdk, поставляемую со многими IDE, вроде delphi, builder, visual studio... Обзаведитесь msdn, или хотя-бы пользуйтесь ею online...

Цитата:
Но ведь в винапи нет функций которые выводят изображение в пунктах меню.

Можно использовать функцию SetMenuItemBitmaps(...) или перехватывать сообщение WM_DRAWITEM для пунктов, имеющих стиль MFT_OWNERDRAW.

Цитата:
И как реализованы окна без рамок, произвольной формы?

SetWindowRgn(...).

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение18.04.2010, 00:37 


10/06/09
111
Qt - это всё-таки не просто библиотека с набором классов.

Можно сказать, что Qt - это расширение языка C++(это не я сказал, это Жасмин Бланшет). Добавлены такие понятия, как слоты и сигналы, поддерживается метаобъектность. Вместе с Qt поставляется даже свой компилятор moc. (метаобъектный компилятор)

Да и вообще, странная эта штуковина, какая - то непонятная утилита qmake, ничего похожего вроде нет в MFC и т.п. библиотеках.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение18.04.2010, 19:10 


15/07/09
8
Функционал Qt невозможно реализовать в одиночку
(хотя если ты ветеран GOTW, то наверное можно).
Там наверное 20 лет труда 24/7/365.
Но мне она понравилась. С MFC и WTL у меня не срослось.
А Qt интуитивно понятна. Отличная библиотека.

-- Вс апр 18, 2010 20:13:39 --

Qt в принципе может и свою растеризацию применять.
Но у меня есть подозрение, что в winApi все есть, только на низком уровне.
Какие-нибудь хитрые последовательности сообщений и вызовов функций.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение19.04.2010, 02:22 


12/09/08

2262
malin в сообщении #310743 писал(а):
Можно сказать, что Qt - это расширение языка C++(это не я сказал, это Жасмин Бланшет). Добавлены такие понятия, как слоты и сигналы, поддерживается метаобъектность. Вместе с Qt поставляется даже свой компилятор moc. (метаобъектный компилятор)
Это оттого, что те, кто Qt начинали, на C++ писать нифига не умели. Все это отлично выражается в терминах языка и никаких расширений не требует. Теперь это legacy, который легче поддерживать, чем отскрести.
malin в сообщении #310743 писал(а):
Да и вообще, странная эта штуковина, какая - то непонятная утилита qmake, ничего похожего вроде нет в MFC и т.п. библиотеках.
Это типа, все, чего нету в MFC — это не из нашей Вселенной? Зачем все мерять по ПО игровых консолей? Есть еще в этом мире программы.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение19.04.2010, 07:51 


04/02/08
325
Буково
Цитата:
Зачем все мерять по ПО игровых консолей?

Хорошо сказано, и, главное, - справедливо!

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение19.04.2010, 15:19 
Заслуженный участник
Аватара пользователя


01/08/06
3053
Уфа
Вау, какие люди! вздымщик Цыпа! Welcome back! :mrgreen:
Мы уже соскучились по этим Вашим
Цитата:
Зачем все мерять по ПО игровых консолей?
Ну, сейчас в разделе CS станет веселее :P

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение20.04.2010, 22:32 


10/06/09
111
Цитата:
Зачем все мерять по ПО игровых консолей?

А по чему ещё мерить? много вы графических библиотек навскидку назовёте? Я больше трёх не могу: MFC, QT, wxWidjets. Ну гугл мне ещё подсказал GTK.

Я, конечно, не хочу задевать чувства меньшинств, но вроде понятно, что наиболее весомыми здесь являются MFC и QT. их и сравниваю.

Цитата:
Все это отлично выражается в терминах языка и никаких расширений не требует

Да ну? и как же в терминах языка объяснить, что такое сигнал?

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение21.04.2010, 01:03 


04/02/08
325
Буково
Цитата:
MFC, QT, wxWidjets. Ну гугл мне ещё подсказал GTK.

Что такое MFC не знаю, но добавлю еще motif.

 Профиль  
                  
 
 Re: Qt как реализован?
Сообщение21.04.2010, 09:09 


23/12/08
245
Украина
malin в сообщении #311532 писал(а):
Да ну? и как же в терминах языка объяснить, что такое сигнал?

Тут сходу даже два ответа:
1) moc компилятор всего-то заменяет красивые слова signal, slot, на не очень красивый цикл (написанный на С++), и потом уже GCC-g++ компилирует самый что ни-наесть С++ код.
2) вариант вообще без всяких moc реализован в boost::signal (я специально заглянул в исходники, и ни одного #include <windows.h> там не нашлось =) )


P.S да и почему вы считаете что WinApi это черный ящик?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group