2014 dxdy logo

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

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




На страницу 1, 2  След.
 
 Qt как реализован?
Сообщение11.04.2010, 19:43 
Друг сказал, что Qt это фактически одни классы, которые используют функции винапи. Но ведь в винапи нет функций которые выводят изображение в пунктах меню. Скажите ваше мнение.

 
 
 
 Re: Qt как реализован?
Сообщение11.04.2010, 21:40 
Классы, макросы, шаблоны и всякие ифдефы. :)

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

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

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

 
 
 
 Re: Qt как реализован?
Сообщение12.04.2010, 11:12 
ИИ - это что?

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


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

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

 
 
 
 Re: Qt как реализован?
Сообщение12.04.2010, 14:10 
Просто у меня не получается найти в коде, где они там
это объявляют, а то так хочется свою мини-Qt написать.
Например в качестве курсовой

 
 
 
 Re: Qt как реализован?
Сообщение13.04.2010, 15:04 
Цитата:
хочется свою мини-Qt написать.
Например в качестве курсовой

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

 
 
 
 Re: Qt как реализован?
Сообщение17.04.2010, 14:36 
2mycoding
Читайте winapi sdk, поставляемую со многими IDE, вроде delphi, builder, visual studio... Обзаведитесь msdn, или хотя-бы пользуйтесь ею online...

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

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

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

SetWindowRgn(...).

 
 
 
 Re: Qt как реализован?
Сообщение18.04.2010, 00:37 
Qt - это всё-таки не просто библиотека с набором классов.

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

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

 
 
 
 Re: Qt как реализован?
Сообщение18.04.2010, 19:10 
Функционал Qt невозможно реализовать в одиночку
(хотя если ты ветеран GOTW, то наверное можно).
Там наверное 20 лет труда 24/7/365.
Но мне она понравилась. С MFC и WTL у меня не срослось.
А Qt интуитивно понятна. Отличная библиотека.

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

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

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

 
 
 
 Re: Qt как реализован?
Сообщение19.04.2010, 07:51 
Цитата:
Зачем все мерять по ПО игровых консолей?

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

 
 
 
 Re: Qt как реализован?
Сообщение19.04.2010, 15:19 
Аватара пользователя
Вау, какие люди! вздымщик Цыпа! Welcome back! :mrgreen:
Мы уже соскучились по этим Вашим
Цитата:
Зачем все мерять по ПО игровых консолей?
Ну, сейчас в разделе CS станет веселее :P

 
 
 
 Re: Qt как реализован?
Сообщение20.04.2010, 22:32 
Цитата:
Зачем все мерять по ПО игровых консолей?

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

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

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

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

 
 
 
 Re: Qt как реализован?
Сообщение21.04.2010, 01:03 
Цитата:
MFC, QT, wxWidjets. Ну гугл мне ещё подсказал GTK.

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

 
 
 
 Re: Qt как реализован?
Сообщение21.04.2010, 09:09 
malin в сообщении #311532 писал(а):
Да ну? и как же в терминах языка объяснить, что такое сигнал?

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


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

 
 
 [ Сообщений: 22 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group