Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] Создание собственных виджетов, на примере wwwidgets 
V
    Опции темы
mosg
  Дата 29.8.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Добрый день!

Интересует вопрос: встречал ли кто-нибудь документацию по созданию своих виджетов с Qt по примеру wwWidgets библиотеки?

 - http://www.wysota.eu.org/wwwidgets/

Спасибо.
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
bsa
Дата 29.8.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



http://doc.trolltech.com

А что тебя конкретно интересует?
PM   Вверх
bsa
Дата 29.8.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



А что собственно мешает посмотреть исходники этих wwwidgets? Они доступны.
И вообще, свой виджет делается путем создания класса-наследника QWidget
PM   Вверх
mosg
Дата 29.8.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Насчет doc.trolltech.com не буду ничего комментировать, ибо я эту страницу вижу каждый день, и каждый Божий день ничего близкого к тому, о чем я спрашиваю там не появляется ...

Цитата
А что собственно мешает посмотреть исходники этих wwwidgets? Они доступны.
И вообще, свой виджет делается путем создания класса-наследника QWidget


А вот это уже правильный ход мыслей, это первое чем я занялся, когда задумался о своем виджете, но исходники wwwidgets достаточно массивны, а я предпочитаю тратить время на понимание как что-то делается из простого, а не на ковыряние чужого кода ... Хотя, если честно, я там немного покавырял ...

Что мне хочется сделать? Вот это: http://www.wysota.eu.org/wwwidgets/screens...earlineedit.png
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
SABROG
Дата 29.8.2008, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Если бы я хотел сделать подобный контрол используя лишь свои текущие знания, то я бы наверно взял бы QFrame, впихнул туда QLineEdit и за ним widget, поигрался бы с настройками цвета, бордюров, размеров. Переопределил бы событие для мыша, чтобы виджет, который отображает кнопку стирания работал как кнопка.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 30.8.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



А я бы отнаследовался от QLineEdit и переопределил paintEvent()...
PM   Вверх
SABROG
Дата 30.8.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(bsa @ 30.8.2008,  08:49)
А я бы отнаследовался от QLineEdit и переопределил paintEvent()...

В принципе можно нарисовать картинку крестика в правом углу в обработчике paintEvent, а потом обрабатывать эвент мыши, и если клик был где-то в области этой картинки, то эмитить свой сигнал на очистку. А чтобы картинка не затиралась текстом, сначала вызывать оригинальный обработчик painEvent'a, а потом сверху рисовать картинку. Можно еще сделать проверку в paintEvent'e на текущую позицию мышки, чтобы менять вид картинки.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
bsa
Дата 31.8.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Цитата(SABROG @ 30.8.2008,  21:36)
Цитата(bsa @ 30.8.2008,  08:49)
А я бы отнаследовался от QLineEdit и переопределил paintEvent()...

В принципе можно нарисовать картинку крестика в правом углу в обработчике paintEvent, а потом обрабатывать эвент мыши, и если клик был где-то в области этой картинки, то эмитить свой сигнал на очистку. А чтобы картинка не затиралась текстом, сначала вызывать оригинальный обработчик painEvent'a, а потом сверху рисовать картинку. Можно еще сделать проверку в paintEvent'e на текущую позицию мышки, чтобы менять вид картинки.

Молодец. Весь алгоритм разложил. Что теперь топикстартеру останется сделать? smile 
PM   Вверх
mosg
Дата 31.8.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Цитата(bsa @  31.8.2008,  10:48 Найти цитируемый пост)
Что теперь топикстартеру останется сделать?

Топикстартер то сделает так, вот только вопрос был не в том, как реализовать алгоритм, а вопрос был об общей методологии процесса smile Ну и на том спасибо, SABROG!

Будет реализация у меня - оставлю ссылку тут,.. поехали  smile 
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
mosg
  Дата 1.9.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 3.3.2008
Где: Moscow

Репутация: 1
Всего: 1



Всем знающим и не знающим: 

 - это : http://www.wysota.eu.org/wwwidgets/screens...earlineedit.png
и частично
 - это : http://www.wysota.eu.org/wwwidgets/screens...filechooser.png

тут: исходники
PM MAIL WWW ICQ Skype GTalk Jabber YIM MSN   Вверх
pilotnet
Дата 16.9.2008, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



А я проще делал - наследовал  qwidget и пихал в него qlineedit либо qlabel и qpushbutton 
PM MAIL   Вверх
petroline
Дата 11.8.2013, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.8.2013

Репутация: нет
Всего: нет



Я начал изучать Qt недавно. Установил Qt 5.1....
Пытаюсь создать проект "Пользовательский виджет Qt Designer" и... чёт не получается...

Запускаю мастер создания проекта, выбираю категорию "Другой проект" даллее "Пользовательский проект Qt Designer"
Указываю для проекта имя MyPushButton, добавляю класс виджета MyPushButton, в качестве базового указываю QPushButton.
В настройках оставляю по умолчанию ("Включить проект", "Создать основу").
На следующей форме оставляю так же по умолчанию: Название модуля - mypushbuttonplugin, Файл ресурсов - icon.qrc

В сгенерированные коды не вношу никаких изменений. Мне пока интерена сама технология создания и интеграции виджета в Qt Creator.
Потому сразу запускаю отладку (точнее выпуск - release).
Как я понимаю сборка проходит гладко, но, в конце появляется окошечко.

user posted image

Какая программа требуется, я так и не понял (рыскания по инету в течение суток ничего не дали... может не там рыскал).
Возможно речь идет о какой-то утилите установки виджета или еще чего... Вобщем, в итоге... файл libmypushbuttonplugin.dylib я заполучил,
но как плагин он никуда не установился. На сколько понимаю, он должен попасть в папку Qt5.1.0/5.1.0/clang_64/plugins/designer (это в MAC OS) или Qt\Qt5.1.0\Tools\QtCreator\bin\plugins\designer (WIndows).
Копирую его в эти папки в ручную... в интерфейсе Qt в списке плагинов ничего не появилось... Иду в меню "Интрументы"-"Дизайнер форм"-"О плагинах Qt Designer", хлопаю кнопку "Обновить".
В результате под MAC OS никакой реакции, в винде получаем сообщение "Не возможно загрузить библиотеку...... процедура не найдена".

user posted image

Qt скачана и установлена как есть (т.е. все по умолчанию) отсюда http://qt-project.org/downloads версия 5.1.
Установлена под Windows 7 (32bit) и MAC OS X Lion 10.8.4

Что под виндой, что под маком... с плагином не удалось. Что делаю не так ?

Это сообщение отредактировал(а) petroline - 11.8.2013, 14:03
PM MAIL   Вверх
bsa
Дата 12.8.2013, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Чтобы "запустить" библиотеку, необходимо запустить программу, которая загрузит эту библиотеку. Вот у тебя Критор и интересуется, где лежит программа.
Чтобы плагин загрузился, он должен быть собран той же версией компилятора и с использованием той же версии Qt, что и критор/дизайнер.
PM   Вверх
petroline
Дата 13.8.2013, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.8.2013

Репутация: нет
Всего: нет



Цитата(bsa @ 12.8.2013,  15:46)
Чтобы "запустить" библиотеку, необходимо запустить программу, которая загрузит эту библиотеку. Вот у тебя Критор и интересуется, где лежит программа.
Чтобы плагин загрузился, он должен быть собран той же версией компилятора и с использованием той же версии Qt, что и критор/дизайнер.

Хм.. было подозрение на счет запуска... Но еще были мысли, что ему нужна программа копирования этого самого виджета. По идее, виджет создан и скомпилирован, судя по скриптам в pro-файле, библиотека виджета должна быть скопирована в папку с виджетами (этого не происходит). У меня стоит всего одна версия (Qt 5.1).. а как узнать, в какой версии собран мой Qt Creator ?
PM MAIL   Вверх
Alca
Дата 13.8.2013, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 2
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0867 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.