Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Doszhan от Март 14, 2011, 18:09



Название: При наведении мыши...
Отправлено: Doszhan от Март 14, 2011, 18:09
Доброго времени суток,

Задача стоит такая. При наведении кнопки красить кнопку в черный цвет, при нажатии - в белый. На практике оказывается, что при нажатии красится в белый цвет, а чтобы перекрасить в черную надо двинуть мышкой при нажатом положении кнопки.

В чем моя ошибка?

Код:
btns1[i][j]->installEventFilter(this);
...

...
bool MainWindow::eventFilter(QObject *object, QEvent *event){
    if( event->type() == QEvent::MouseMove){
        QPushButton *btn = qobject_cast<QPushButton*>(object);
        btn->setStyleSheet("background-color: black;");
    }
    if( event->type() == QEvent::MouseButtonPress){
        QPushButton *btn = qobject_cast<QPushButton*>(object);
        btn->setStyleSheet("background-color: white;");
    }
    return QMainWindow::eventFilter(object, event);
}


Название: Re: При наведении мыши...
Отправлено: Doszhan от Март 14, 2011, 19:09
Оказывается надо было написать такое:

Код:
btns1[i][j]->setMouseTracking(true);

Появился еще вопрос:
Как вернуть старый цвет кнопки, если мышка уже "ушла" из зоны той кнопки?

UPD: чтобы решить вышеизложенную проблему каждый раз при движении мыши перекрашивал все кнопки (100 кнопок), а только затем красил необходимую кнопку. Только тормозит программа.


Название: Re: При наведении мыши...
Отправлено: Kolobok от Март 14, 2011, 19:49
Всё это можно записать в один стиль. Эвент фильтр тут совсем не нужен.

Код:
QPushButton:pressed {
     background-color: white;
 }
QPushButton:hover {
     background-color: black;
 }


Название: Re: При наведении мыши...
Отправлено: Doszhan от Март 14, 2011, 20:01
Kolobok, спасибо за отклик.

Но мне нужно еще кое-какие операции проделывать над этими кнопками. Покраску я просто как пример привел. Спасибо, не знал, что можно как в css прописать стили.


Название: Re: При наведении мыши...
Отправлено: m_ax от Март 14, 2011, 21:06
Поле из 100 кнопок..
И при движение мыши это всё ещё и мигает белое-чёрное, белое-чёрное..
Интересно))
Бредовая догадка: не морской бой часом?


Название: Re: При наведении мыши...
Отправлено: Doszhan от Март 14, 2011, 21:33
Поле из 100 кнопок..
И при движение мыши это всё ещё и мигает белое-чёрное, белое-чёрное..
Интересно))
Бредовая догадка: не морской бой часом?

Приз в студию! Да, морской бой :) По программированию задали

Насчет кнопок - разобрался. Конечно, скорость не ахти, но уже времени нет оптимизировать код)


Название: Re: При наведении мыши...
Отправлено: m_ax от Март 14, 2011, 21:53
Поле из 100 кнопок..
И при движение мыши это всё ещё и мигает белое-чёрное, белое-чёрное..
Интересно))
Бредовая догадка: не морской бой часом?

Приз в студию! Да, морской бой :) По программированию задали

Насчет кнопок - разобрался. Конечно, скорость не ахти, но уже времени нет оптимизировать код)

Элементарно, Ватсон.. Вы уже об этом упоминали ранее.
Кнопки - это не самый лучший вариант.


Название: Re: При наведении мыши...
Отправлено: Doszhan от Март 14, 2011, 22:01
m_ax, http://doc.qt.nokia.com/4.2/itemviews-chart.html ?

Интересно, но уже времени нету :)