Название: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: 0x0001 от Март 07, 2010, 22:06 хочу сравнить QT в ставнении с MFC... для решения перехода...
в голову пришла простая задача, к примеру, менять подсветку Кнопки (или рисунок на ней) при Фокусе мыши.... в MFC: 1. создаю COwnedDrawButton от CButton , переопределяю DrawItem(LPDRAWITEMSTRUCT lpDrw) 2. далее перехватываю событие OnMouseMove(nFlag,CPoint) , 3. далее Api Шной функцией PtInRect(..,CPoint) проверяю в пределах ли нужной области - Флаг. 4. если в пределах области (Флаг) - подгружаю нужный BITMAP/PNG по WM_PAINT(это DrawItem для контрола) или просто меняю цвет заливки DC (можно с Transparency) 5. 10 минут ВСЁ!!! КАК Это сделать с QT классами ??? QPushButton ??? Какие "сигналы" использовать ??? СПасибо Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: BRE от Март 07, 2010, 22:11 Все это легко делается без всякого кода, используя только style sheet.
Если хочется покодить, то можно переопределить: void QWidget::enterEvent ( QEvent * event ) [virtual protected] void QWidget::leaveEvent ( QEvent * event ) [virtual protected] или использовать eventFilter. Смотри: void QObject::installEventFilter ( QObject * filterObj ) Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: 0x0001 от Март 07, 2010, 22:20 mouseMoveEvent ( QMouseEvent * event ) ???
ОК, попробую замутить код , чтобы прочувствовать идею ;) Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: BRE от Март 07, 2010, 22:22 mouseMoveEvent ( QMouseEvent * event ) ??? Зачем тебе mouseMoveEvent? Что бы покодить побольше? ;)Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: 0x0001 от Март 07, 2010, 22:40 Зачем тебе mouseMoveEvent? Что бы покодить побольше? ;) [/quote] КАК Зачем??? по аналогии с OnMouseMove(), вычисляю координаты положения курсора уст. флаг по которому по WM-PAINT далее определяю соответствующий Статусу кнопки цвет... а как ещё ? Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: BRE от Март 07, 2010, 23:04 КАК Зачем??? по аналогии с OnMouseMove(), вычисляю координаты положения курсора уст. флаг по которому по WM-PAINT далее определяю соответствующий Статусу кнопки цвет... Тебе нужно знать два момента, когда курсор мыши переместился на виджет (кнопку) и когда он вышел из этой области.а как ещё ? Два этих события генерируются Qt. Но если хочется по-вычислять, то можно и mouseMoveEvent... ;) Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: SABROG от Март 08, 2010, 02:49 Без css можно сделать через state machine, кусок кода из примера Event Transitions:
Код
При входе в состояние генерятся сигналы. QEventTransition генерит triggered(), а QState генерит entered(). Слот можно повесить на любой из них, а в слоте можно менять картинку или цвет виджета, например QWidget::setForegroundRole()/setBackgroundRole(), ну или через QPalette. P.S.: если нужно менять только картинку, то у класса QIcon есть метод addPixmap(const QPixmap & pixmap, Mode mode = Normal, State state = Off), для каждого состояния можно задать свою картинку, а потом иконку добавить на кнопку через setIcon. Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: ритт от Март 08, 2010, 03:17 интересно, как можно код портировать с MFC на QuickTime? irjkjnf...
Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: SABROG от Март 08, 2010, 03:25 интересно, как можно код портировать с MFC на QuickTime? irjkjnf... Добавь себе в подпись: QT - QuickTime Qt - Qt Development Frameworks Чтобы народ учился. Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: Igors от Март 08, 2010, 12:02 Добавь себе в подпись: "Кстати о птичках" - а есть ли поддержка QuickTime в Qt? Мне приходится держать QuickTime на 2 платформах, для mov файлов и большинства графических файлов. Это обходится мне недешево. QT - QuickTime Qt - Qt Development Frameworks Чтобы народ учился. Заранее спасибо за информацию Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: 0x0001 от Март 08, 2010, 12:24 Без css можно сделать через state machine, кусок кода из примера Event Transitions: А КАК это с SST ? Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: 0x0001 от Март 08, 2010, 12:30 интересно, как можно код портировать с MFC на QuickTime? irjkjnf... эту фразу тоже не понял, объясните пож новичку!Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: SABROG от Март 08, 2010, 12:45 "Кстати о птичках" - а есть ли поддержка QuickTime в Qt? Мне приходится держать QuickTime на 2 платформах, для mov файлов и большинства графических файлов. Это обходится мне недешево. Насколько я знаю Phonon использует кодеки, которые установлены в системе. Встроенных в Qt нет.Заранее спасибо за информацию А КАК это с SST ? Вопроса не понял. Тебе полный пример нужен или что? Пример называется Event Transition и есть в папке examples.эту фразу тоже не понял, объясните пож новичку! Разница в написании второй буквы. Если она большая, то это QuickTime, если маленькая, то Qt Development Frameworks.Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: ритт от Март 08, 2010, 18:58 да-да, разница примерно такая, как между 0x0001 и 0x1000
Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: Igors от Март 08, 2010, 21:16 да-да, разница примерно такая, как между 0x0001 и 0x1000 Это одно и то же число в little и big endianНазвание: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: BRE от Март 08, 2010, 21:25 Это одно и то же число в little и big endian Нет.Название: Re: Хочу принять Окончательное решение по QT, Вопрос... Отправлено: ритт от Март 08, 2010, 21:41 да-да, разница примерно такая, как между 0x0001 и 0x1000 Это одно и то же число в little и big endianкак и ник "0x0001" не может быть адекватно заменён на "адын" - в том посте я лишь это хотел сказать... |