Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
|
XpycT |
21.7.2009, 20:40
Сообщение
#11
|
![]() Студент ![]() Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0
|
Благодаря вашей помощи появился мой первый виджет, собственно скрин в первом посте. Реализована загрузка рисунков через QFileDialog, очистка, drag-and-drop локальных и удаленных(скачиваются в временную директорию) рисунков и запоминание пути к нему.
Делал для формы заливки на сайт - может кому и пригодится. Правда хотелось бы сделать правное "выезжание" панельки, но к сожалению в Qt еще не силен Собственно сам виджет :
imagewidget.zip ( 5.79 килобайт )
Кол-во скачиваний: 194ЗЫ Хотел сделать плагин для дизайнера, откомпилил нормально... но при клике в панели виджетов вываливается крит. ошибка и приглашение в отладчик |
|
|
|
|
ufna |
21.7.2009, 21:05
Сообщение
#12
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5
|
Молодец что доделал
Виджет твой скачал, посмотрел. Только он не комплится в таком виде, пришлось комментарии кое где убрать Если хочешь, могу очень нудно и досконально откомментировать, т.к. есть очень много мест, над которыми нужно работать |
|
|
|
|
XpycT |
21.7.2009, 21:21
Сообщение
#13
|
![]() Студент ![]() Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0
|
Цитата(ufna @ 21.7.2009, 21:05) Link Молодец что доделал Виджет твой скачал, посмотрел. Только он не комплится в таком виде, пришлось комментарии кое где убрать Если хочешь, могу очень нудно и досконально откомментировать, т.к. есть очень много мест, над которыми нужно работать Я только за, ведь как еще научиться, если не на своих ошибках |
|
|
|
|
ufna |
21.7.2009, 22:44
Сообщение
#14
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5
|
1. оформление кода. Представь, что у тебя будет не один такой файлик, а десятки, многие из которых в кучу раз длиннее. Как ты в нем ориентироваться будешь?
2. комментирование кода. Название функций, что делают, и т.д. и т.п. Т.е. код должен быть хорошо оформлен, более читабелен. Это приходит с опытом и по началу кажется излишним, но - лучше начни уделять этому внимание сейчас, потом будет куда легче. 3. Не стоит формировать виджет в main функции. Пусть это будет отдельный класс. В мейне - просто создаем что надо и делаем основную настройку приложения. 4. Сам класс. Если ты делаешь виджет, который в принципе может использоваться не в одном экземпляре и даже других проектах - он должен быть "вещью в себе", но не более чем. Грубо говоря, цель его - показывать картинку с рамочкой. А значит, он должен уметь:
Диалоговые окна из такого виджета - тоже зло. Все должно делаться через родитель, то окно, которое управляет данным виджетом. А этот виджет тогда можно было бы распространять, модифицировать под свои нужды и т.д. В таком же виде - он нужен только однажды, а переделывать.. проще написать заново, при таких размерах. Т.е. грубо говоря, нужно подходить к виджету как к немного другому функционалу, чтобы он не был "все умею, все могу". Он не должен уметь работать с сетью, зачем? А если я два десяткс таких поставлю на форму? Я говорю именно о таких вот, виджетах специализированного использование, но которые не должны делать больше, чем. А - так - молодец |
|
|
|
|
XpycT |
22.7.2009, 8:48
Сообщение
#15
|
![]() Студент ![]() Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0
|
Комментариев не хватает,согласен, просто надо привыкнуть всегда их ставить
На счет сигналов/слотов и ... если я тебя правильно понял, то допустим для открытия рисунка через диалог лучше в mousePressEvent просто вызвать сигнал, допустим emit imageOpen(const QString &imageName)? Хотел еще спросить на счет drag-and-drop'a .Почему, когда я использую в dragEnterEvent ну или на худой конец он игнорирует рисунки. Ну или как можно ограничить рисунками, чтобы другие типы файлов были запрещены(курсор перечеркнутой мыши)? Просто у меня идет проверка только после "скидывания" файла, и то по расширению. |
|
|
|
|
ufna |
22.7.2009, 9:06
Сообщение
#16
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5
|
по сигналам - не совсем. Откуда у тебя взялось имя файла? При нажатии на кнопку ты получаешь желание его добавить изображение, т.е. можно выслать emit( imageDemand() ). А вот когда ты на виджет перетащил файл мышью из системы, то вот тогда - добавляешь на виджет, и - посылаешь emit( imageAdded(QString) ). Или можно слать указатель на картинку и т.п.
А про дрэг н дроп - в dragEnterEvent сделай вывод qDebug() << event->mimeData()->formats() |
|
|
|
|
XpycT |
22.7.2009, 15:19
Сообщение
#17
|
![]() Студент ![]() Группа: Участник Сообщений: 43 Регистрация: 7.7.2009 Пользователь №: 883 Спасибо сказали: 0 раз(а) Репутация: 0
|
Что-то у меня со слотами не получается
testApp.h testApp.cpp Подскажите где я ошибся |
|
|
|
|
kwisp |
22.7.2009, 15:30
Сообщение
#18
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
при чем тут слоты?
ты посмотри что написал то? а в конструкторе П.С. самая распространенная ошибка, если не ошибаюсь, людей только что представленных С++. Сообщение отредактировал kwisp - 22.7.2009, 15:33 |
|
|
|
|
ufna |
22.7.2009, 15:32
Сообщение
#19
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 362 Регистрация: 24.5.2008 Из: Курган/СПб Пользователь №: 182 Спасибо сказали: 29 раз(а) Репутация: 5
|
Слот у тебя приватный, а присоединяешь его к сигналу, поступаемому от чужого класса, никак не связанного с данным. Сделай слот public.
Т.е. посмотри на мессадж выше и кое-что подправь. Сообщение отредактировал ufna - 22.7.2009, 15:33 |
|
|
|
|
kwisp |
22.7.2009, 15:51
Сообщение
#20
|
|
астарожна ынтжинэр ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23
|
Цитата(ufna @ 22.7.2009, 16:32) Link Слот у тебя приватный, а присоединяешь его к сигналу, поступаемому от чужого класса, никак не связанного с данным. Сделай слот public. категорически не согласен сигналы вообще protected и нормально коннектятся. пример с приватным слотом Раскрывающийся текст думается что спецификатор доступа влияет на вызов только при обращении на прямую не через соединение может ошибаюсь, поправьте. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 24.12.2025, 15:38 |