crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Слоты или как-то иначе
Artem
  опции профиля:
сообщение 29.1.2013, 13:36
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


Привет всем.

есть "форма" QLabel с картинкой загруженной в ней
создаю поверх еще один с маленькой картинкой

Прикрепленное изображение


Хочу сделать чтобы при наведение либо изменялся размер либо менялась сама картинка
При клике чтобы проходил другой процесс (открытие настроек).

Не могу понять как с помощью слотов организовать.
Есть только один исполняемый файл main.cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 29.1.2013, 16:14
Сообщение #2


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


В Делфи были процедуры специальные по MouseMove и так далее. А в Qt есть что-то такое или как???
Помогите
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 29.1.2013, 16:49
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Есть. Вам нужно переопределить mouseMoveEvent .
Рекомендую обратить внимание на фразу: "If mouse tracking is switched off, mouse move events only occur if a mouse button is pressed while the mouse is being moved. If mouse tracking is switched on, mouse move events occur even if no mouse button is pressed.".
http://qt-project.org/doc/qt-4.8/qwidget.h...seTracking-prop
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 29.1.2013, 16:55
Сообщение #4


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


Только начал изучать английский. Ужасно, когда понимаешь, что его не знание приводит к долгим поискам и потери кучи времени
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 29.1.2013, 17:37
Сообщение #5


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


а примеры использования где можно глянуть. Все что я видел мне не подходит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 29.1.2013, 17:58
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Прошу прощения переопредлять в данном случае надо enterEvent и leaveEvent.
Примерно как это должно выглядеть:
//MyLabel.h
class MyLabel: public QLabel {

private:
   void enterEvent ( QEvent * event );
   void leaveEvent ( QEvent * event );
};

//MyLabel.cpp
void MyLabel::enterEvent ( QEvent * event )
{
   //тут пишем что должно происходить при наведении мышки
}
void MyLabel::leaveEvent ( QEvent * event )
{
   //тут пишем что должно происходить при покидании курсором пределов виджета.
}

Потом где надо объявляем в коде объекты типа MyLabel и используем их.

Если не хочется наследоваться, можно поставить eventFilter. Примеры и объяснение (правда на английском) http://qt-project.org/doc/qt-4.8/eventsand...l#event-filters и http://qt-project.org/doc/qt-4.8/qobject.h...tallEventFilter

P.S. По поводу предыдущего поста, там сказано что Qt по умолчанию вызывает mouseMoveEvent только при нажатой клавише мыши.

Сообщение отредактировал ilyabvt - 29.1.2013, 17:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Artem
  опции профиля:
сообщение 29.1.2013, 18:30
Сообщение #7


Студент
*

Группа: Новичок
Сообщений: 17
Регистрация: 27.1.2013
Пользователь №: 3688

Спасибо сказали: 0 раз(а)




Репутация:   0  


Почему переопределять именно enterEvent и leaveEvent.

А без использования класса можно как-то реализовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ilyabvt
  опции профиля:
сообщение 29.1.2013, 18:53
Сообщение #8


Активный участник
***

Группа: Участник
Сообщений: 297
Регистрация: 23.6.2011
Пользователь №: 2765

Спасибо сказали: 45 раз(а)




Репутация:   3  


Цитата
Почему переопределять именно enterEvent и leaveEvent.

enterEvent событие когда курсор мыши входит в область виджета. leaveEvent событие когда курсор мыши покидает область виджета.
Цитата
Хочу сделать чтобы при наведение либо изменялся размер либо менялась сама картинка

наведение это enterEvent, обратное событие (при условии конечно что вы хотите восстанавливать размер) это leaveEvent.
Цитата
А без использования класса можно как-то реализовать?

Нет.

Сообщение отредактировал ilyabvt - 29.1.2013, 19:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iReset
  опции профиля:
сообщение 29.1.2013, 19:24
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 178
Регистрация: 6.6.2012
Пользователь №: 3414

Спасибо сказали: 23 раз(а)




Репутация:   2  


Цитата(Artem @ 29.1.2013, 19:30) *
А без использования класса можно как-то реализовать?

Цитата(Artem @ 29.1.2013, 14:36) *
Не могу понять как с помощью слотов организовать.

А как ты хочешь использовать слоты без класса?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.2.2013, 1:28
Сообщение #10


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


по первому сообщению не вижу нужды в таких наваротах, просто сделай кнопку с картинкой, стиль кнопки - плоский, и щёлкай на неёё сколько угодно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 19.4.2024, 1:33