В поддержку Qt

статьи в помощь разработчику

   

Главная

Статьи:

Выбор инструментов разработки

Установка MinGW

Установка Qt

Сборка Qt

Установка Qt Creator

Проблемы Qt 4.8.3

Распараллеливание компиляции

Распараллеливание для Qt 5.0.1

Сборка отладчика GDB

Установка библиотеки Qwt

Плагин Qwt

Установка QwtPolar

Установка QwtPplot3D

Изменение палитры цветов QwtPlot3D

Конфигурация сборки по умолчанию

Сборка Qt Creator из исходников

Пример использования QwtPlot

Масштабирование QwtPlot в стиле TChart

Синхронное масштабирование

Пример использования QwtPolar

Пример использования QwtPlot3D

Редактирование QSplitter

Сборка в Ubuntu для Windows

Установка пакетов без интернета

Установка драйвера NVIDIA

 

Главная > Плагин Qwt (старая редакция)

 

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