Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Обновление плагина в QtCreator


Автор: daemonaz 8.2.2012, 10:46
К сожалению, не нашел толком информацию как установить плагин сторонних проивзодителей, прошу мне помочь.
Скачал из сайта http://qt-apps.org/index.php?xcontentmode=4298 готовый QtWidget, сделал как было указано в инструкции INSTALL: сначала qmake, потом make и make install, никаких сообщений об ошибках не выдавало, но в дизайнере QtCreator этот виджет не отображается, как заставить QtCreator отображать данный виджет?

Автор: _GRIN_ 8.2.2012, 11:19
Почитай тут : http://doc.qt.nokia.com/qtcreator-2.4/adding-plugins.html - там ещё пара полезный ссылок в тексте.

Автор: Amp 8.2.2012, 11:52
Цитата(daemonaz @  8.2.2012,  10:46 Найти цитируемый пост)
но в дизайнере QtCreator этот виджет не отображается, как заставить QtCreator отображать данный виджет? 

А в описании виджета написано, что он выполнен именно в виде плагина? Просто большинство авторов на qt-apps не заморачиваются такими вещами - вот тебе груда cpp/h и файл с лицензией, используй на здоровье. 

Автор: daemonaz 8.2.2012, 13:03
вот он текст из INSTALL

        INSTALLING your custom widget plugin


1. Uncompress the file info a working directory

2. Type qmake <plugin_name.pro>

3. Type make

4. Type make install

5. That's all, your Qt custom widget plugin is installed. You can run Qt Designer
   and you will find the plugin icon in Designer left tollbar

Может, несовместимость играет роль, хотя откомпилировался, собрал и в папки скопировались, все равно не отображается.. 
Какой еще другой способ обойти эту проблему?

Автор: Amp 8.2.2012, 14:53
Ссылку на тот виджет выложи.

Автор: daemonaz 8.2.2012, 15:07
http://qt-apps.org/content/show.php/QSwitch?content=72481
http://qt-apps.org/content/show.php/QLed+?content=72482

Добавлено через 6 минут и 58 секунд
я вроде так понимаю, чтоб задействовать данный виджет нужны libxxxx.so и заголовочный файл к нему xxx.h, первый файл копируется в QtSDK/desktop/Qt/474/gcc/plugins/designer, а второй заголовочный вроде должен быть в составе проекта, может надо скопировать заголовочный файл в папку на SDK include/gui ? 

Автор: Amp 8.2.2012, 18:54
Для самого дизайнера наверняка достаточно только плагина в виде .so или dll. Вообще у меня завелось с пол-пинка. Правда Qt у меня стоит не в виде SDK. Плагин скопировался так (сами исходники полетели в папку examples/designer):
Код

install -m 755 -p "libqswitchplugin.so" "/usr/lib/qt4/plugins/designer/libqswitchplugin.so"


Автор: daemonaz 8.2.2012, 19:12
Спасибо большое! smile 
Да, действительно, если вызывать Qt Designer в составе QtSDK, то проблем нет, как раз и появляется этот модуль, но в Qt Creator во вкладке  Дизайн его нету, я не понимаю QtCreator разве в себя не содержит QtDesigner? а как сделать чтобы во вкладке Дизайн QtCreator было то же самое что и в QtDesigner?

Автор: Amp 8.2.2012, 21:21
В меню Tools -> Form Editor -> About Qt Designer Plugins плагин не фигурирует?

Автор: math64 9.2.2012, 07:49
Копировать (не проверял) нужно в другой каталог.
Для QtDesigner в "C:\Qt\4.7.4\plugins\designer\" (поменяйте на свой путь установки Qt)
Для QtCreator в "C:\Qt\qtcreator-2.1.0\bin\designer\" (поменяйте на свой путь установки QtCreator)
Компилировать в той версии Qt (или более старой), в которой создан QtCreator.
Для рабочего приложения -  нужно вызвать QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath ());
и положить их в подкаталог "\designer\" каталога с исполняемым файлом.

Автор: daemonaz 9.2.2012, 09:06
Цитата(math64 @  9.2.2012,  07:49 Найти цитируемый пост)

Для рабочего приложения -  нужно вызвать QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath ());
и положить их в подкаталог "\designer\" каталога с исполняемым файлом. 


Все верно, заработало! Только папка другая QtCreator/lib/qtcreator/plugins/designer.. А так спасибо большое! smile 
Теперь помедленней, я же только начинающий, где вызывать QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath ()) ?
А зачем? Недостаточно заголовочный файл подцепить?

Автор: math64 9.2.2012, 11:44
Если на машине стоит Qt - приложение найдёт нужные плагины, там где они лежат в Qt (пути при установке прошиваются в QtCore4.dll).
Если приложение нужно запустить на машине где Qt нет, нужно вместе с ним скопировать нужные dll и плагины.
QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath ()) вызывается в main() или в конструкторе Вашего приложения:
Код

Application::Application(int &argc, char **argv) :
    QApplication(argc, argv)
{
//1.Плагины лежат в <exe-dir>/designer/
  addLibraryPath(applicationDirPath());
//или
//2.Плагины лежат в <exe-dir>/plugins/designer/
// addLibraryPath(applicationDirPath() + "/plugins/");
//3. exe лежит в <app-dir>/bin/
//Плагины лежат в <app-dir>/plugins/designer/
// addLibraryPath(applicationDirPath() + "../plugins/");
}
int main(int argc, char** argv) {
    Application app(argc, argv);
    // или
    //QApplication(argc, argv);
    //app.addLibraryPath(app.applicationDirPath ());
    MainWindow w;
    w.show();
    return app.exec();
}


Автор: daemonaz 9.2.2012, 12:00
math64, спасибо! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)