MyTetra Share
Делитесь знаниями!
Виджеты библиотеки Qwt в дизайнере форм
Время создания: 20.03.2016 22:41
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Графика
Запись: xintrea/mytetra_syncro/master/base/1431344467tafffd0zgg/text.html на raw.github.com

Виджеты библиотеки 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.


Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования