Виджеты библиотеки Qwt в дизайнере форм
Старая редакция статьи, новую можно найти здесь.
При установке библиотеки Qwt и дополнения к ней QwtPolar формируются
плагины, предназначенные для дизайнера форм. Существует ряд проблем,
препятствующих появлению их виджетов в панели инструментов дизайнера.
Настоящая статья призвана оказать помощь в разрешении этих проблем.
В статье рассматриваются действия по настройке плагина библиотеки
Qwt 6.0.2, но они в равной степени справедливы и для Qwt 5.2.3,
а также для дополнения к Qwt библиотеке QwtPolar 1.0.1
(QwtPolar 0.1.0).
Дизайнер Qt Creator
Устанавливаемый Qt Creator имеет свою папку, в которой он
ищет плагины для дизайнера форм. Пусть Qt Creator был установлен,
например, в папку
C:\Qt\qtcreator-2.6.2
тогда папка для плагинов дизайнера
C:\Qt\qtcreator-2.6.2\bin\designer
Если попытаться поместить в нее плагин библиотеки
Qwt (файл qwt_designer_plugin.dll), собранной
с помощью MinGW, то в панели инструментов дизайнера его виджеты
не появятся. А после выбора пункта главного меню Инструменты
> Редактор форм > О модулях Qt Designer... становится
понятна причина по следующему сообщению
Модуль "C:\Qt\qtcreator-2.6.2\bin\designer\qwt_designer_plugin.dll"
использует несовместимую библиотеку Qt. Ожидается ключ "Windows
msvc release full-config", но получен ключ "Windows mingw
release full-config"
Дальше Ваши действия могут развиваться по одному из трех сценариев.
1) Путь наименьшего сопротивления.
2) Сборка Qt Creator с MinGW (проверено).
3) Сборка Qwt с Microsoft Visual C++ (не проверялось).
Ну, с первым сценарием все понятно. Он означает, что Вы не редактируете
формы, содержащие графики, в дизайнере, интегрированном в Qt Creator,
а используете для этих целей дизайнер, устанавливаемый вместе с
библиотекой Qt.
Сборка Qt Creator с MinGW
Действия при выборе второго сценария описаны в соответствующей
статье. К ним остается лишь добавить,
что делать с плагином Qwt. Собранный Qt Creator ищет плагины в
папке библиотеки Qt, которая использовалась при его сборке. Например,
если использовалась библиотека Qt 4.8.4, то это папка
C:\Qt\qt-4.8.4\plugins\designer
Именно в нее следует поместить плагин библиотеки
Qwt, но для появления его виджетов в дизайнере форм должны быть
выполнены следующие условия
плагин должен быть собран той же связкой
инструментов (см. здесь), что и Qt Creator;
плагин должен быть собран в релизной конфигурации (не
в отладочной);
должны быть доступны все библиотеки, от которых плагин
зависит.
В нашем примере это означает, что Qwt следует собирать
с Qt 4 компилятором MinGW 4.6 (4.4). Как отмечалось в
вышеупомянутой статье для работы над своими проектами Вы можете
использовать какую-либо другую связку инструментов, например, Qt 5
и MinGW 4.7. Соответственно в переменной Path
у Вас будет прописан путь к библиотеке Qwt, собранной этими инструментами,
а она, ясное дело, не совместима с нашим плагином. Опять проблема,
но решаемая. Следует скопировать "правильную" библиотеку
Qwt (файл "qwt.dll") в папку bin
собранного Qt Creator, например
C:\Qt\qt-creator-2.6.2\bin
тогда Qt Creator сможет ее найти независимо
от того, что прописано в переменной Path.
Чтобы избежать путаницы, перечислим еще раз порядок действий.
1. Собираем Qt Creator, используя связку
инструментов Qt 4 и MinGW 4.6, в папке
C:\Qt\qt-creator-2.6.2
2. Копируем в папку
C:\Qt\qt-creator-2.6.2\bin
необходимые библиотеки MinGW и Qt 4 (подробности
здесь).
3. Собираем библиотеку Qwt (см. статью),
используя ту же связку инструментов, устанавливаем ее в папку
C:\Qt\qwt-6.0.2
4. Копируем плагин
C:\Qt\qwt-6.0.2\plugins\designer\qwt_designer_plugin.dll
в папку для плагинов дизайнера
C:\Qt\qt-4.8.4\plugins\designer
5. Копируем библиотечный файл (в релизной конфигурации)
C:\Qt\qwt-6.0.2\lib\qwt.dll
в папку
C:\Qt\qt-creator-2.6.2\bin
Теперь можно пересобрать библиотеку Qwt другой связкой инструментов,
изменить по своему разумению содержимое переменной Path.
Qt Creator должен исправно работать, виджеты Qwt в панели инструментов
интегрированного дизайнера форм должны появляться.
Сборка Qwt с Microsoft Visual C++
При выборе третьего сценария предположительно надо выполнить следующие
действия.
1. Установить Qt Creator (см. статью)
в папку
C:\Qt\qtcreator-2.6.2
2. Установить библиотеку Qt 4.8.4 для
VS 2010, например, в папку
C:\Qt\qt-4.8.4-vs
используя установочный файл, доступный по ссылке.
Прописать в переменную Path путь к библиотеке
и убрать записи, относящиеся к другим версиям Qt.
3. Собрать библиотеку Qwt с Qt 4 и Microsoft
Visual C++ 2010.
4. Поместить плагин qwt_designer_plugin.dll
в папку
C:\Qt\qtcreator-2.6.2\bin\designer
5. Скопировать библиотечный файл qwt.dll
в папку
C:\Qt\qtcreator-2.6.2\bin
Теперь можно удалить за ненадобностью Qt 4.8.4 для
VS 2010 и собранную с MSVC библиотеку Qwt. В переменную
Path следует прописать путь к той версии
Qt, которая будет использоваться в проектах, а Qwt пересобрать нужной
связкой инструментов.
Дизайнер Qt
Вместе с библиотекой Qt устанавливается дизайнер
форм. Он ищет свои плагины в папке
%QTDIR%\plugins\designer
Именно в нее следует помещать плагин Qwt (файл "qwt_designer_plugin.dll").
Для того чтобы виджеты Qwt отображались в панели инструментов дизайнера,
все библиотеки, от которых зависит плагин, должны быть доступны.
Раньше это обеспечивалось автоматически использовалась одна
связка инструментов, а пути к Qwt и компилятору MinGW были прописаны
в системной переменной Path и изменялись
только при обновлении какого-либо компонента. Сейчас настало время,
когда приходится довольно часто переключаться с одной связки инструментов
на другую, и не всегда содержимое переменной Path
согласуется с тем, что требуется вызываемому дизайнеру форм. Чтобы
не зависеть от этих обстоятельств, рекомендуется выполнить следующие
настройки.
Qt 4.8.4 и MinGW 4.6
1. Собираем Qwt данной связкой инструментов
и помещаем плагин Qwt в папку
C:\Qt\qt-4.8.4\plugins\designer
2. В папке C:\Qt\qt-4.8.4\bin
уже имеются библиотечные файлы MinGW 4.6 libgcc_s_dw2-1.dll
и mingwm10.dll, следует скопировать туда
недостающий libstdc++-6.dll, его можно найти
в папке C:\Qt\mingw-4.6\bin.
3. Копируем библиотечный файл qwt.dll
в папку
C:\Qt\qt-4.8.4\bin
Qt 5.0.1 (es2) и MinGW 4.7
1. Собираем Qwt данной связкой инструментов
и помещаем плагин Qwt в папку
C:\Qt\Qt5.0.1\5.0.1\mingw47_32\plugins\designer
2. В папке C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin
уже имеются все необходимые библиотечные файлы MinGW 4.7.
3. Копируем библиотечный файл qwt.dll
в папку
C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin
Qt 5.0.1 (desktop) и MinGW 4.7
Замечание. Поскольку библиотека Qwt не использует
OpenGL, то будучи собранной предыдущей связкой инструментов, она
подойдет и для этой.
1. Если это еще не сделано, собираем Qwt данной
связкой инструментов, помещаем плагин Qwt в папку
C:\Qt\qt-5.0.1\qtbase\plugins\designer
2. Копируем в папку C:\Qt\qt-5.0.1\qtbase\bin
библиотечные файлы MinGW 4.7 libgcc_s_sjlj-1.dll,
libstdc++-6.dll и libwinpthread-1.dll.
Их можно найти в папке C:\Qt\mingw-4.7\bin.
3. Копируем библиотечный файл qwt.dll
в папку
C:\Qt\qt-5.0.1\qtbase\bin
Теперь виджеты Qwt должны появляться в дизайнере форм любой из
вышеперечисленных версий Qt независимо от того, что прописано в
системной переменной Path.
|