На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Графический интерфейс пользователя в приложениях на языке C++
    Сначала небольшое "лирическое отступление"

    GUI в Windows 7
    Прикреплённая картинка


    Графический интерфейс пользователя, или Graphical User Interface (сокр. GUI) представляет собой всю совокупность элементов, с которыми взаимодействует пользователь для работы с программой. Программы могут работать и без GUI, например, в фоне, выполняя какие-то системные задачи, а могут взаимодействовать через текстовый терминал –- консоль. Но у таких программ, как правило, ограниченная область применения, и их довольно немного. Большинство программ отображают GUI, в виде окон или изображений (скинов). Данная мини-статья как раз о том, какими средствами можно реализовать GUI в приложении на C++

    C++ является языком, описанным стандартом, и когда мы говорим C++, мы имеем ввиду не среду (IDE), не компилятор, а стандарт. И стандарт C++ не предусматривает работы с GUI, по крайней мере, на данный момент. Следовательно, любая высокоуровневая работа с GUI выходит за рамки стандарта, и за рамки языка, и является либо частью какой-либо IDE/ОС, либо отдельной кроссплатформенной/кросс-IDE библиотекой
    Рассмотрим сначала C++ IDE с поддержкой GUI

    CodeGear C++ Builder
    Данная IDE базируется на библиотеке Visual Components Library (VCL), написанной на паскале. Это значит, что любое приложение, созданное в этой IDE (без особых настроек), так или иначе, использует часть VCL для выполнения рутинных задач. VCL отвечает не только за GUI, это высокоуровневая обертка над Win32 API. Но, тем не менее, существенная её часть отведена под работу GUI, и избавляет программиста от нужды использовать непосредственно Win32API для построения GUI и управления оным.

    Плюсы:
    Очень удобный конструктор форм, работающий по принципу WYSIWYG.
    Возможность создавать собственные элементы управления, совмещая существующие, или используя собственную отрисовку и логику
    Каждый элемент представлен объектом (C++ классом)
    Легкая и интуитивно понятная обработка событий

    Минусы:
    Как и любая высокоуровневая обертка, вносит дополнительный код и замедляет работу приложения
    В связи с тем, что VCL написана на паскале, работа с ней из C++ довольно медленна

    Microsoft Visual C++
    Поддержка GUI в этой IDE зависит от выбранной технологии и типа проекта. Начнем с простого, Win32 Project. С этим типом проекта программисту доступны следующие технологии: Windows Template Library (WTL) и Dialog Templates.

    WTL представляет собой набор шаблонных классов, оборачивающих стандартные элементы управления Windows. Весьма незначительно упрощает работу, по сравнению с "голым" Win32 API, но позволяет писать объектный код, и упрощает некоторые манипуляции с GUI.

    Плюсы:
    Стандартные элементы управления представлены объектами

    Минусы:
    Имеет весьма ограниченный набор классов
    Неудобная работа с событиями
    Нет собственного конструктора форм

    Dialog Templates является технологией ОС Windows, и она не привязана к языку или IDE. Основной задачей DT является упрощение построения диалоговых окон. Поскольку DT представляют собой тип ресурсов Windows, конструктор DT является частью функционала редактора ресурсов. Редактор ресурсов VC++ содержит конструктор DT, но таким же конструктором может обладать любой редактор ресурсов Windows, ив качестве примера можно привести Restorator или ResHack (Замечание: в Express-версии VC++ нет редактора ресурсов, и, как следствие, конструктора DT. С этой версией следует использовать сторонние редакторы ресурсов).

    Плюсы:
    Поддерживается конструктор форм (*зависит от редактора ресурсов)
    Нет привязки к языку или IDE

    Минусы:
    Вся работа с DT осуществляется посредством Win32 API
    Конструктор форм ограничен только стандартными элементами управления

    Перейдем теперь к MFC. По сути, MFC является некоторой помесью WTL и DT, незначительно расширяя возможности DT и предоставляя объекты под э.у. а так же систему обработки событий
    Итак, MFC состоит из двух частей: DT с дополнительными MFC-функциями и библиотека классов, обеспечивающая взаимодействие с GUI. Библиотека классов MFC, в отличие от WTL, лишь частично базируется на шаблонах (ATL), использует иерархию классов, и незначительно упрощает взаимодействие с GUI. Основной особенностью библиотеки MFC является тесная интеграция с Win32 API, методы классов повторяют Win32 API функции, оттого работать с этой библиотекой достаточно трудно.

    Плюсы:
    Поддерживает конструктор форм (на базе DT, см. выше)
    Поддерживает работу с ActiveX
    Стандартные элементы управления представлены объектами

    Минусы:
    Относительная низкоуровневость классов, требующая знание Win32 API
    Неудобная работа с событиями

    Остался еще один тип проекта, который представляет собой Win32 Project с задействованием возможностей .NET Framework, как на уровне языка, так и на уровне классов, а, следовательно, и GUI. Называется он C++/CLI WindowsForms Project. Первая часть названия указывает на дополнения в языке C++, вторая на тип .NET проекта. C++/CLI проект, помимо стандартных библиотек, использует .NET Framework, в том числе и для работы с GUI. Технология WindowsForms поддерживается на уровне IDE, и имеет весьма удобный, не уступающий по качеству конструктору VCL, WYSIWYG-конструктор форм. .NET FW полностью избавляет программиста от необходимости работы с Win32 API для взаимодействия с GUI, а так же обеспечивает кроссплатформенность

    Плюсы:
    Очень удобный конструктор форм
    Возможность создавать собственные элементы управления
    Удобная работа с событиями
    Кроссплатформенность (ограниченная)

    Минусы:
    Зависимость от тяжелого (до нескольких сотен МБ).NET FW, который может отсутствовать в системе
    Привязка кода к IDE VC++

    На данный момент более нет IDE для C++, со встроенной поддержкой GUI. Посему, переходим к библиотекам. Наиболее распространены следующие сторонние библиотеки для GUI: Qt, Gtk+, WxWidgets. Все они кроссплатформенны, но не все объектно-ориентированы

    Qt ( Adil )
    Кроссплатформенная библиотека, не только для GUI, но и практически на все случаи жизни: состоит из раздельно подключаемых модулей - QtCore, QtGui, QtNetwork, QtSql и т.д.
    Имеется набор приложений для разработчика -
    QtDesigner - WYSIWYG редактор форм
    QtLinguist - средство локализации
    QtAssistant - справка в стиле MSDN
    На данный момент вышла вторая версия специализированной IDE QtCreator, где встроены QtDesigner, QtAssistant и редактор кода со многими современными фишками, редактор ресурсов, есть поддержка отладчика. Среда использует внешние компиляторы и отладчики.
    Так же существуют расширения для поддержки разработки в Qt в других IDE - MSVS, Eclipse.

    Распространяется под двумя вариантами лицензирования - свободной (LGPL) и коммерческой.

    Плюсы:
    Широкая кроссплатформенность. Есть реализация даже для встраиваемых решений - Qt Embedded
    WYSIWYG редактор форм, не уступающий VCL и .NET
    Возможность создавать собственные элементы управления
    Сравнительная лёгкость при локализации приложения.
    Свободное распространение с исходными кодами
    Весьма приличная документация.

    Минусы:
    Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт
    Довольно медлительна.
    Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT
    LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.
    Сборка библиотеки из исходников - весьма нетривиальное занятие (правда, имеются так же и готовые сборки, не требующие компиляции)

    wxWidgets ( MinLexx )
    Кроссплатформенная библиотека, в основном, для GUI, хотя и консольные приложения делать есть возможность. Позволяет создавать приложения для Windows, OS X, Linux/Unix, также для Win Mobile, iPhone SDK. Очень похожа на WinAPI (названия функций, констант, легко привыкаешь после WinAPI). Также есть классы для работы с сетью, файловой системой, итд. Билдится в 2х вариантах - с поддержкой Unicode и без (это кроме вариантов с Debug/Release). Легко строится из сырцов. Имеются сторонние дизайнеры UI (мне нравится wxFormBuilder, например). Как утверждают разработчики, wxWidgets приложения выглядят как родные на каждой платформе, потому что используют нативные элементы управления, а не занимаются эмуляцией GUI (отсюда, в частности, следует минус, что не все элементы ведут себя одинаково на разных платформах).

    Плюсы
    Достаточно маленькая (таки меньше Qt)
    Соединения событий и обработчиков напоминает систему из MFC со статической таблицей (BEGIN_MESSAGE_MAP / DECLARE_MESSAGE_MAP), равно как и есть возможность динамических соединений
    Есть возможность создавать собственные элементы управления
    Есть возможность локализации
    Свободное распространение с исходными кодами

    Минусы
    Все-таки недостаточно кроссплатформенная - некоторые функции не работают под Lin/Mac, или наоборот, под Win, или работают по-разному - это надо будет учесть
    Слабая документированность
    LGPL таки не совсем свободная лицензия
    Статически слинкованные с либой бинарники, все-таки, маленькими не назовешь

    Эта часть статьи требует дополнения

    Gtk+
    [описание]

    Плюсы:
    Минусы:



    В заключение, хотел бы напомнить, что нет понятия "лучшая GUI-технология", есть понятие "подходящая для данной задачи GUI-технология". Для каждой конкретной задачи взвешивайте все плюсы и минусы, и сами решайте, что будет наиболее удобно
    Сообщение отредактировано: B.V. -
      С кроссплатформенными GUI-библиотеками, увы, работать не довелось. Поэтому просьба к знатокам Qt, Gtk+ и WxWidgets дополнить данную статью. Все, что нужно, это короткое описание устройства (по примеру описания WTL, например) и перечень плюсов и минусов, самых основных

      Все дополнения можно оставлять прямо в этой теме, позже я их перенесу в статью
        Qt
        Кроссплатформенная библиотека, не только для GUI, но и практически на все случаи жизни: состоит из раздельно подключаемых модулей - QtCore, QtGui, QtNetwork, QtSql и т.д.
        Имеется набор приложений для разработчика -
        QtDesigner - WYSIWYG редактор форм
        QtLinguist - средство локализации
        QtAssistant - справка в стиле MSDN
        На данный момент вышла вторая версия специализированной IDE QtCreator, где встроены QtDesigner, QtAssistant и редактор кода со многими современными фишками, редактор ресурсов, есть поддержка отладчика. Среда использует внешние компиляторы и отладчики.
        Так же существуют расширения для поддержки разработки в Qt в других IDE - MSVS, Eclipse.

        Распространяется под двумя вариантами лицензирования - свободной (LGPL) и коммерческой.

        Плюсы:
        Широкая кроссплатформенность. Есть реализация даже для встраиваемых решений - Qt Embedded
        WYSIWYG редактор форм, не уступающий VCL и .NET
        Возможность создавать собственные элементы управления
        Сравнительная лёгкость при локализации приложения.
        Свободное распространение с исходными кодами
        Весьма приличная документация.

        Минусы:
        Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт
        Довольно медлительна.
        Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT
        LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.
        Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.
          Супер! :) Только одно небольшое замечание
          Цитата Adil @
          Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.

          Присутствуют и готовые сборки, которые собирать не надо.
            Цитата
            Сборка библиотеки из исходников - весьма нетривиальное занятие и приносит удовольствие только истинному гентушнику.

            набрать emerge чертовски сложно.

            Цитата
            Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT

            не согласен. проще наверное и не придумаешь. а вот шарповый прикол с евентами и делегатами для новичка та еще проблема.

            Цитата
            Довольно медлительна

            ну брехня же

            Цитата
            Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт

            статически слинкованный хеловорд на Си занимает 624кБ(недавно проверял). Обычно ставят динамическую библиотеку и имеют счастие...

            Цитата
            LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt, что означает, что приложение должно поставляться с исходными кодами или, как минимум, - с объектными файлами.

            Шо? Кроме статической линковки ничего не знаем? LGPL - это одна отличная лицензия, а хотим сколотить состояние вне рамок LGPL - не жадничаем и покупаем комерческую лицензию.
              Цитата smalcom @
              набрать emerge чертовски сложно.
              Под виндой? Почитайте хоть название раздела.

              Цитата smalcom @
              не согласен. проще наверное и не придумаешь. а вот шарповый прикол с евентами и делегатами для новичка та еще проблема.
              Сравните:
              ExpandedWrap disabled
                connect(src, SIGNAL(srcsignal), dst, SLOT(dstslot)); //Qt
                dst->OnEvent = src->event; //VCL
              И никакого moc-компилятора

              Цитата smalcom @
              ну брехня же
              собака брешет

              Цитата smalcom @
              статически слинкованный хеловорд на Си занимает 624кБ(недавно проверял). Обычно ставят динамическую библиотеку и имеют счастие...
              Причем тут Си? Qt - это C++. А динамическую библиотеку надо таскать с приложением - те же винды далеко не все из коробки имеют эти библиотеки, как это не удивительно. Да и в вашем хелловорде небось одна консоль была? Прочитайте хоть название темы.

              Цитата smalcom @
              Шо? Кроме статической линковки ничего не знаем?
              Ни шо. Причем тут статическая линковка? Или Вы открыли способ сборки приложения без исходников или объектников при динамической линковке?
              Цитата smalcom @
              LGPL - это одна отличная лицензия, а хотим сколотить состояние вне рамок LGPL - не жадничаем и покупаем комерческую лицензию.
              Наличие или отсутствие у меня жадности не делает из лицензии LGPL лицензию, например, BSD или MIT.
                Цитата
                Под виндой? Почитайте хоть название раздела.

                >>Графический интерфейс пользователя в приложениях на языке C++
                как пример приведён гуй семёрки.

                Цитата
                собака брешет

                но доказательств медлительности так и не предоставлено

                Лицензии не читаем? Тогда задам наводящие вопросы.

                Цитата
                LGPL - всё-таки не самая свободная лицензия. В данном случае разработчик приложения с Qt должен обеспечить возможность переcборки своего приложения конечным пользователем с другой версией Qt

                Зачем пользователю пересобирать приложение если вызовы одни и теже?
                Для разработчика приложений на Qt требуется только динамическая библиотека и заголовочный файл, для пользователя - только библиотека. При выходе новой версии библиотеки ничего пересобирать не надо, тк апи у кутэ довольно стабилен.

                Цитата
                Причем тут статическая линковка?

                это намек на пересборку и исходники. лицензия LGPL не запрещает использование Qt в комерческих разработках, а исходники требует только при получении производного продукта, а это статическая линковка и внесение изменений в исходный код самой библиотеки. Так что не пугайте народ.

                Добавлено
                BSD и MIT вообще пользователю побоку ибо выбор лицензии изначально делает разработчик и за неверное распространение продукта иметь будут его, а не пользователя программного продукта.
                MOC не является недостатком Qt, а является вполне оправданным решением в силу ограниченности самого C++


                Цитата
                Причем тут статическая линковка?

                при том что ваша непонятная боязнь изза угла и, собственно попытка опустить Qt
                Цитата
                Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт

                изначально говорит о незнании других способов линковки и содержимого лицензий

                Добавлено
                Цитата
                Наличие или отсутствие у меня жадности не делает из лицензии LGPL лицензию, например, BSD или MIT.

                я просто заинтересовался какие вы продукты выпустили под BSD или MIT лицензией, а еще больше какой из ваших продуктов стал производным от программных продуктов имеющих лицензию MIT или BSD?

                Добавлено
                ExpandedWrap disabled
                  connect(src, SIGNAL(srcsignal), dst, SLOT(dstslot)); //Qt
                  dst->OnEvent = src->event; //VCL


                или
                ExpandedWrap disabled
                  dst.connect(src, SIGNAL(srcsignal), SLOT(dstslot))

                можно ли в VCL подключать источники событий к другим источникам, порождая цепочки событий, или несколько источников к одному приемнику?
                немаловажный вопрос о том как описываются данные источники и приемник в VCL и как они вызываются.

                нашел объявление типа события
                ExpandedWrap disabled
                  typedef void __fastcall (__closure *TNotifyEvent)(System::TObject *Sender);

                великолепно, и интуитивно понятно. Builder и его VCL мертвы и имеют смысл к изучению только для поддержки старых продуктов писать новый продукт с основой VCL - моветон.
                  Цитата Adil @
                  Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT

                  Хм... По-моему наоборот все просто.
                    Цитата smalcom @
                    как пример приведён гуй семёрки.
                    В семерке есть emerge? O_o.

                    Цитата smalcom @
                    Графический интерфейс пользователя в приложениях на языке C++
                    Раздела? Вы всегда так внимательны? :no-sad:

                    Цитата smalcom @
                    но доказательств медлительности так и не предоставлено
                    Доказательства быстроты я тоже не увидел. Если "брехня" - это доказательство, тогда я тоже привёл. :ph34r:

                    Цитата smalcom @
                    Для разработчика приложений на Qt требуется только динамическая библиотека и заголовочный файл, для пользователя - только библиотека. При выходе новой версии библиотеки ничего пересобирать не надо, тк апи у кутэ довольно стабилен.
                    Расскажите это тем кто перешел с тройки на четверку. А еще лучше вспомните, раз уж такой знаток emerge, о пересборке всего, что только попадёт под руку, при смене релиза Qt. Даже с только динамической зависимостью от последней.

                    Цитата smalcom @
                    Цитата

                    Довольно тяжеловесна - исполняемый файл win32 со статически прилинкованной библиотекой весит от 4-5 МБт


                    изначально говорит о незнании других способов линковки и содержимого лицензий
                    Изначально говорит о том, что вы читать совсем не умеете. Да еще не помните, что сами написали "статически слинкованной". Покажите исходник c QMainWindow, который со статической линковкой Qt даст, как вы сказали, 500 Кб на win32. Вы не знаете разницу между консолью и ГУИ? Вы просто ни разу не линковали статически Qt. И куда, кстати, "вес" библиотеки деётся при динамической линковке вы похоже тоже не знаете. Просто исчезает. И думаете, что просто так сравнивается "вес" именно статически слинкованных приложений.
                    И причем тут "вес" и лицензия? :wacko: В огороде бузина, в Киеве дядька.

                    Цитата smalcom @
                    можно ли в VCL подключать источники событий к другим источникам, порождая цепочки событий, или несколько источников к одному приемнику?
                    Вы, извиняюсь, в какой класс ходите? Логика то где - ваши слова о цепочках и нескольких источниках очень убедительно подтверждают "интуитивную простоту для новичка сигналов и слотов"? :lol: Вы уже спорите о гибкости и возможностях, хотя я об этом ни слова не сказал. Вам не с кем похоливарить, я гляжу.

                    Цитата smalcom @
                    лицензия LGPL не запрещает использование Qt в комерческих разработках
                    Я где то говорил обратное? :-?

                    Цитата smalcom @
                    я просто заинтересовался какие вы продукты выпустили под BSD или MIT лицензией, а еще больше какой из ваших продуктов стал производным от программных продуктов имеющих лицензию MIT или BSD?
                    Ппц. Наличие или отсутствие моих продуктов под той или иной лицензией как то влияет на разницу в ограничениях лицензий LGPL, BSD или MIT? Это просто переход на личности фанатика Qt, не видящего в ней ни единого недостатка.

                    Цитата smalcom @
                    нашел объявление типа события
                    ExpandCollapseWrap onWrap offLine numbersLine numbers

                    typedef void __fastcall (__closure *TNotifyEvent)(System::TObject *Sender);


                    великолепно, и интуитивно понятно. Builder и его VCL мертвы и имеют смысл к изучению только для поддержки старых продуктов писать новый продукт с основой VCL - моветон.
                    И причем тут это объявление типа? Новичок когда его увидит - уже не новичок.
                    Ну а последняя фраза явно свидетельствует, что вы ошиблись разделом, вам в Холивар. Отвечать тут не нужно, мои вопросы риторические.
                    Или просто пишите своё описание - только про минусы не забудьте, - или создавайте в холиварах тему Qt vs VCL и холиварьте на здоровье. Или пусть лучше B.V. отрежет этот пустой флейм и перенесёт в соответсвующий раздел. Резвитесь там в своё удовольствие, у вас явные способности к этому.

                    Добавлено
                    Цитата D_KEY @
                    Цитата (Adil @ 29.08.10, 17:36)
                    Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT

                    Хм... По-моему наоборот все просто.
                    Ты считаешь себя новичком?
                      Цитата
                      В семерке есть emerge?

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

                      Цитата
                      Раздела? Вы всегда так внимательны?

                      пардон, протупил. но, название раздела "Системное программирование и WinAPI". Что, только под винду бывает системное программирование или вы больше ничего не знаете кроме Windows и VCL?

                      Цитата
                      Доказательства быстроты я тоже не увидел. Если "брехня" - это доказательство, тогда я тоже привёл.

                      Извиняюсь(как говорил слонёнок) но вы первым обосрали Qt так что извольте и предоставить доказательство, иначе это считается пусканием пузырей в луже посредством пропускания биогазов через собственую прямую кишку.

                      Цитата
                      Расскажите это тем кто перешел с тройки на четверку.

                      П... пардон за выражение. С вами все ясно: "нууу кутэ я щупал, слышал". Наверняка вы лепите гуишечки при помощи билдера и вам просто надо оправдать перед обществом свою ошибку.
                      Если вы иностранец и не поняли(ааа, у вас же только виндовс в голове), то смена мажорного релиза это все равно что поменять Win98 на WinXP.

                      Цитата
                      А еще лучше вспомните, раз уж такой знаток emerge, о пересборке всего, что только попадёт под руку, при смене релиза Qt. Даже с только динамической зависимостью от последней.

                      sudo emerge -uDNav world

                      Холиварить я и не пытаюсь. Если уж возникло такое двойственное впечатление, то давайте все разложим по полочкам
                      Цитата
                      Да еще не помните, что сами написали "статически слинкованной". Покажите исходник c QMainWindow, который со статической линковкой Qt даст

                      Мерять объём библиотеки используя статическую линковку некорректно. О чем я и намекнул объёмом приложения, который даёт даже простейший HelloWorld. Суть библиотеки в том что она разделяемая и все приложения ее использующие не будут весить по 4-5 мегабайт. Верно ведь?

                      Цитата
                      И куда, кстати, "вес" библиотеки деётся при динамической линковке вы похоже тоже не знаете

                      Одна копия исполняемого кода библиотеки находится в оперативной памяти. Только одна копия и эта цифра независит от количества приложений, которые ее используют.

                      Цитата
                      Наличие или отсутствие моих продуктов под той или иной лицензией как то влияет на разницу в ограничениях лицензий LGPL, BSD или MIT?

                      Вы рассуждаете о дистрибуции приложения под LGPL лицензией(причем неверно), а также BSD и MIT. Это не говорит о лицензиях, но о вашей компетенции в данном вопросе.

                      Цитата
                      И причем тут это объявление типа? Новичок когда его увидит - уже не новичок.

                      Пока человек новичок события и привязки сами создаются?


                      Цитата
                      Ты считаешь себя новичком?

                      Это я холиварю? На лицо моральное давление на чужое мнение.

                      Добавлено
                      Цитата
                      только про минусы не забудьте

                      конечно я знаю минусы Qt: layout'ы для новичка, загрязненность QObject, нюансы при работе с сигналами и таймерами, неочевидные и ненастравиваемые моменты есть и в QtCreator. Вот видите сколько недостатков(объективных) сходу, а не "медлительна и прожорлива".
                        Цитата smalcom @
                        до вас видимо совсем не доходит значение русских слов. если вы иностранец и значения слов вам непонятны, то так и скажите - исправимся и будем иными путями доносить информацию
                        Ну, расскажите по русски, какая связь между emerge и win7

                        Цитата smalcom @
                        пардон, протупил. но, название раздела "Системное программирование и WinAPI". Что, только под винду бывает системное программирование или вы больше ничего не знаете кроме Windows и VCL?
                        И продолжаете тупить, переходя на хамство, не соображая что этот раздел - именно для системного программирования под виндоуз. Не верите - запостите вопрос по системному программированию по *nix.

                        Цитата smalcom @
                        sudo emerge -uDNav world
                        И что - обновление мира - и динамически завязанные пакеты вдруг не будут пересобираться? Вы брякаете с умным видом фразы невпопад, думая, что я буду в шоке от величия вашего гения? Кстати, -a - лишнее, лучшее -p

                        Цитата smalcom @
                        Холиварить я и не пытаюсь. Если уж возникло такое двойственное впечатление, то давайте все разложим по полочкам
                        Не двойственное, вполне чёткое.

                        Цитата smalcom @
                        П... пардон за выражение. С вами все ясно: "нууу кутэ я щупал, слышал". Наверняка вы лепите гуишечки при помощи билдера и вам просто надо оправдать перед обществом свою ошибку.
                        Э-э, какую ошибку? И не гадайте на кофейной гуще - я начал писать c Qt-embedded, когда вы еще только учились делать make install для ядра, попутно матеря дающих вам добрые советы. И потом еще извинялись. Как бы опять не пришлось - за эти годы благоразумия вы не поднакопили.

                        Цитата smalcom @
                        Одна копия исполняемого кода библиотеки находится в оперативной памяти. Только одна копия и эта цифра независит от количества приложений, которые ее используют.
                        Ну вы остановились в полшаге от озарения, что если при поставке динамически слинкованного приложения придется еще и запихивать в дистрибутив всю библиотеку целиком, или заставлять юзера её качать - речь идёт о винде, не забывайте, там, как я уже упоминал, Qt с системой не поставляется. Или вы будете спорить с тем, что при статической линковке далеко не весь код библиотеки линкуется в исполняемый файл.

                        Цитата smalcom @
                        Пока человек новичок события и привязки сами создаются?
                        Открою великую тайну - да! Довольно много начинающих пользователей событий VCL понятия не имеют, что скрывается под "TNotifyEvent".

                        Цитата smalcom @
                        Вы рассуждаете о дистрибуции приложения под LGPL лицензией(причем неверно), а также BSD и MIT. Это не говорит о лицензиях, но о вашей компетенции в данном вопросе.
                        Так это ваша цель - указать собеседнику на его некомпетентность, да еще просто заявляя, что "да вы и ни писали ни чего". Хороший подход для хорошего тролля. Я тогда покажу вашу некомпетентность более убедительным способом
                        http://qt.nokia.com/about/licensing/freque...hat-is-the-lgpl
                        Цитата
                        ...The LGPL carries some restrictions regarding the ability for users to relink libraries and other restrictions that may impose architectural requirements that some organizations might not be comfortable with...
                        Если вы можете предоставить юзеру "ability to relink", дав ему только свой исполняемый файл (и кучу длл в придачу), то вы просто обязаны осчастливить мир своим открытием. :blush:
                          Цитата Adil @
                          Если вы можете предоставить юзеру "ability to relink", дав ему только свой исполняемый файл (и кучу длл в придачу), то вы просто обязаны осчастливить мир своим открытием. :blush:

                          Цитата Adil @
                          The LGPL carries some restrictions regarding the ability for users to relink libraries

                          Вот эти самые libraries можно взять, поковыряться в исходниках, пересобрать и заменить одну dll-ку на другую. Главное - API оставить таким же.
                            Цитата Adil @
                            Цитата D_KEY @
                            Цитата (Adil @ 29.08.10, 17:36)
                            Не совсем интуитивно понятная, особенно для новичка, система обработки событий SIGNAL-SLOT

                            Хм... По-моему наоборот все просто.
                            Ты считаешь себя новичком?

                            А ты ;) ?
                            С чего ты решил, что новичкам это интуитивно не понятно? Вполне логичная и простая концепция.
                            В общем, как мне кажется, это зависит от человека, поэтому заносить это в недостатки Qt считаю неверным решением.
                              Цитата
                              сли вы можете предоставить юзеру "ability to relink"

                              вобщем с вами все ясно.

                              -a на -p заменить? жгите дальше, умничка.
                                D_KEY, чем спорить, предложи свое видение плюсов и минусов :)
                                Если несогласных не будет, его и добавим

                                smalcom, к тебе то же самое! Критика-критикой, но лучше всего, изложи свое видение Qt. Быть может, оно получится более объективным
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0654 ]   [ 18 queries used ]   [ Generated: 27.04.24, 21:10 GMT ]