Russian Qt Forum
Май 05, 2024, 16:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Custom widget plugin  (Прочитано 5056 раз)
L.Marvell
Гость
« : Август 27, 2005, 13:52 »

Создал свой собственный виджет со списком установленных в системе шрифтов, наследуемый от QListWidget. Делал так, чтобы название шрифта отображалось тем шрифтом, которое оно отображает (сори за каламбур). Подключил плагин к дизайнеру. Проблема в том, что когда ложу плагин на форму, то список отображается разными шрифтами, а в просмотре и в уже скомпилином проекте названия отображаются обычным шрифтом. Поделитесь мыслями в чем может быть загвоздка.
Записан
L.Marvell
Гость
« Ответ #1 : Август 27, 2005, 15:53 »

Что самое интересное, когда я добавляю этот же виджет вручную, а не через дизайнер, то все работает отлично...
Записан
L.Marvell
Гость
« Ответ #2 : Август 27, 2005, 16:41 »

Итак... Проблема обнаружена (наверное), осталось только найти выход. А проблема в том, что в дизайнере говорится, что объект порожден от класса QListWidget, хотя должен бы от JCFontListWidget, который в свою очередь наследован от QListWidget.
У меня тут мысль возникла. Есть 4 файла:
jcfontlistwidget.h
jcfontlistwidget.cpp
jcfontlistwidgetplugin.h
jcfontlistwidgetplugin.cpp

Собранный плагин ложится в %QTDIR%\plugins\designer. Но ведь он ссылается на jcfontlistwidget.h, а система о нем ничегошеньки не знает! Т.е. .h и .cpp тоже нужно куда-то положить или это я уже с ума схожу? В Асистенте про это вроде ничего не сказано. Нуждаюсь в помощи знающих.
Записан
joktar
Гость
« Ответ #3 : Август 29, 2005, 04:41 »

Цитата: "L.Marvell"
Итак... Проблема обнаружена (наверное), осталось только найти выход. А проблема в том, что в дизайнере говорится, что объект порожден от класса QListWidget, хотя должен бы от JCFontListWidget, который в свою очередь наследован от QListWidget.
У меня тут мысль возникла. Есть 4 файла:
jcfontlistwidget.h
jcfontlistwidget.cpp
jcfontlistwidgetplugin.h
jcfontlistwidgetplugin.cpp

Собранный плагин ложится в %QTDIR%\plugins\designer. Но ведь он ссылается на jcfontlistwidget.h, а система о нем ничегошеньки не знает!

А должна знать.
Цитата: "L.Marvell"

Т.е. .h и .cpp тоже нужно куда-то положить или это я уже с ума схожу? В Асистенте про это вроде ничего не сказано. Нуждаюсь в помощи знающих.

Т.е.проблема с тем, что не подключается jcfontlistwidget.h?
Я делал по "Qt3:C++ программирование GUI на C++" (перевод "C++ GUI Programming with Qt3"), там в главе 5 есть расписаный пример интеграции в Designer. Книга это в сети есть как на русском так и на англйском варианте(вот URL'ов не помню)

Про QStringList x3d_renderWidgetPlugin::keys() const
{
        return QStringList() << "x3d_renderwidget";
}
и(особенно) QString x3d_renderWidgetPlugin::includeFile(const QString &) const
{
        return "x3d_renderwidget.h";
}
Не забыл?(Имена естественно свои,проверялось на 3.3.4)
Записан
L.Marvell
Гость
« Ответ #4 : Август 29, 2005, 13:07 »

Да вот собственно делал по примеру в Асистенте. Плагин собрался, к дизайнеру подключился, но вот такой трабл. А вот этого я не понял:

Цитировать
Про QStringList x3d_renderWidgetPlugin::keys() const
{
return QStringList() << "x3d_renderwidget";
}
и(особенно) QString x3d_renderWidgetPlugin::includeFile(const QString &) const
{
return "x3d_renderwidget.h";
}
Не забыл?(Имена естественно свои,проверялось на 3.3.4)
Записан
joktar
Гость
« Ответ #5 : Август 29, 2005, 18:03 »

Цитата: "L.Marvell"
Да вот собственно делал по примеру в Асистенте. Плагин собрался, к дизайнеру подключился, но вот такой трабл. А вот этого я не понял:
Цитировать
Про QStringList x3d_renderWidgetPlugin::keys() const
{
return QStringList() << "x3d_renderwidget";
}
и(особенно) QString x3d_renderWidgetPlugin::includeFile(const QString &) const
{
return "x3d_renderwidget.h";
}
Не забыл?(Имена естественно свои,проверялось на 3.3.4)

Это кусок моего плагина
::keys возращает имя реализованного плагинов виджета(у меня-x3d_renderwidget)
QStringList x3d_renderWidgetPlugin::keys() const
{
return QStringList() << "x3d_renderwidget";
}
(а includeFile возвращает какой надо подкючать .h-файл)
и(особенно) QString x3d_renderWidgetPlugin::includeFile(const QString &) const
{
return "x3d_renderwidget.h";
}
У тебя естественно вместо x3d_renderwidget.h должен быть твой header, вместо x3d_renderwidget - имя твоего widget'а а вместо
x3d_renderWidgetPlugin - соотвественно твой plugin-класс
Записан
L.Marvell
Гость
« Ответ #6 : Август 29, 2005, 18:38 »

А, шут меня побери, стормозил. Ну да, есть у меня эти два метода, только вместо keys - name. Забыл сказать, юзаю Qt 4.0.1 open source под вынь.

Код:
QString JCFontListWidgetPlugin::name() const
{
return QLatin1String("JCFontListWidget");
}

QString JCFontListWidgetPlugin::includeFile() const
{
return QLatin1String("jcfontlistwidget.h");
}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.094 секунд. Запросов: 20.