![]() |
|
![]() ![]() ![]() |
|
mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
Добрый день!
Интересует вопрос: встречал ли кто-нибудь документацию по созданию своих виджетов с Qt по примеру wwWidgets библиотеки? - http://www.wysota.eu.org/wwwidgets/ Спасибо. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
||||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А что собственно мешает посмотреть исходники этих wwwidgets? Они доступны.
И вообще, свой виджет делается путем создания класса-наследника QWidget |
|||
|
||||
mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
Насчет doc.trolltech.com не буду ничего комментировать, ибо я эту страницу вижу каждый день, и каждый Божий день ничего близкого к тому, о чем я спрашиваю там не появляется ...
А вот это уже правильный ход мыслей, это первое чем я занялся, когда задумался о своем виджете, но исходники wwwidgets достаточно массивны, а я предпочитаю тратить время на понимание как что-то делается из простого, а не на ковыряние чужого кода ... Хотя, если честно, я там немного покавырял ... Что мне хочется сделать? Вот это: http://www.wysota.eu.org/wwwidgets/screens...earlineedit.png |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Если бы я хотел сделать подобный контрол используя лишь свои текущие знания, то я бы наверно взял бы QFrame, впихнул туда QLineEdit и за ним widget, поигрался бы с настройками цвета, бордюров, размеров. Переопределил бы событие для мыша, чтобы виджет, который отображает кнопку стирания работал как кнопка.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
А я бы отнаследовался от QLineEdit и переопределил paintEvent()...
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В принципе можно нарисовать картинку крестика в правом углу в обработчике paintEvent, а потом обрабатывать эвент мыши, и если клик был где-то в области этой картинки, то эмитить свой сигнал на очистку. А чтобы картинка не затиралась текстом, сначала вызывать оригинальный обработчик painEvent'a, а потом сверху рисовать картинку. Можно еще сделать проверку в paintEvent'e на текущую позицию мышки, чтобы менять вид картинки. |
|||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Молодец. Весь алгоритм разложил. Что теперь топикстартеру останется сделать? ![]() |
||||
|
|||||
mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
||||
|
||||
mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 тут: исходники |
|||
|
||||
pilotnet |
|
|||
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
А я проще делал - наследовал qwidget и пихал в него qlineedit либо qlabel и qpushbutton
|
|||
|
||||
petroline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.8.2013 Репутация: нет Всего: нет |
Я начал изучать Qt недавно. Установил Qt 5.1....
Пытаюсь создать проект "Пользовательский виджет Qt Designer" и... чёт не получается... Запускаю мастер создания проекта, выбираю категорию "Другой проект" даллее "Пользовательский проект Qt Designer" Указываю для проекта имя MyPushButton, добавляю класс виджета MyPushButton, в качестве базового указываю QPushButton. В настройках оставляю по умолчанию ("Включить проект", "Создать основу"). На следующей форме оставляю так же по умолчанию: Название модуля - mypushbuttonplugin, Файл ресурсов - icon.qrc В сгенерированные коды не вношу никаких изменений. Мне пока интерена сама технология создания и интеграции виджета в Qt Creator. Потому сразу запускаю отладку (точнее выпуск - release). Как я понимаю сборка проходит гладко, но, в конце появляется окошечко. ![]() Какая программа требуется, я так и не понял (рыскания по инету в течение суток ничего не дали... может не там рыскал). Возможно речь идет о какой-то утилите установки виджета или еще чего... Вобщем, в итоге... файл 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 никакой реакции, в винде получаем сообщение "Не возможно загрузить библиотеку...... процедура не найдена". ![]() Qt скачана и установлена как есть (т.е. все по умолчанию) отсюда http://qt-project.org/downloads версия 5.1. Установлена под Windows 7 (32bit) и MAC OS X Lion 10.8.4 Что под виндой, что под маком... с плагином не удалось. Что делаю не так ? Это сообщение отредактировал(а) petroline - 11.8.2013, 14:03 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Чтобы "запустить" библиотеку, необходимо запустить программу, которая загрузит эту библиотеку. Вот у тебя Критор и интересуется, где лежит программа.
Чтобы плагин загрузился, он должен быть собран той же версией компилятора и с использованием той же версии Qt, что и критор/дизайнер. |
|||
|
||||
petroline |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 11.8.2013 Репутация: нет Всего: нет |
Хм.. было подозрение на счет запуска... Но еще были мысли, что ему нужна программа копирования этого самого виджета. По идее, виджет создан и скомпилирован, судя по скриптам в pro-файле, библиотека виджета должна быть скопирована в папку с виджетами (этого не происходит). У меня стоит всего одна версия (Qt 5.1).. а как узнать, в какой версии собран мой Qt Creator ? |
|||
|
||||
Alca |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |