Russian Qt Forum
Ноябрь 22, 2024, 21:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: При наведении мыши...  (Прочитано 6128 раз)
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);
}
Записан
Doszhan
Гость
« Ответ #1 : Март 14, 2011, 19:09 »

Оказывается надо было написать такое:

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

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

UPD: чтобы решить вышеизложенную проблему каждый раз при движении мыши перекрашивал все кнопки (100 кнопок), а только затем красил необходимую кнопку. Только тормозит программа.
« Последнее редактирование: Март 14, 2011, 19:18 от Doszhan » Записан
Kolobok
Гость
« Ответ #2 : Март 14, 2011, 19:49 »

Всё это можно записать в один стиль. Эвент фильтр тут совсем не нужен.

Код:
QPushButton:pressed {
     background-color: white;
 }
QPushButton:hover {
     background-color: black;
 }
Записан
Doszhan
Гость
« Ответ #3 : Март 14, 2011, 20:01 »

Kolobok, спасибо за отклик.

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

Сообщений: 2095



Просмотр профиля
« Ответ #4 : Март 14, 2011, 21:06 »

Поле из 100 кнопок..
И при движение мыши это всё ещё и мигает белое-чёрное, белое-чёрное..
Интересно))
Бредовая догадка: не морской бой часом?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Doszhan
Гость
« Ответ #5 : Март 14, 2011, 21:33 »

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

Приз в студию! Да, морской бой Улыбающийся По программированию задали

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

Сообщений: 2095



Просмотр профиля
« Ответ #6 : Март 14, 2011, 21:53 »

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

Приз в студию! Да, морской бой Улыбающийся По программированию задали

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

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

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Doszhan
Гость
« Ответ #7 : Март 14, 2011, 22:01 »

m_ax, http://doc.qt.nokia.com/4.2/itemviews-chart.html ?

Интересно, но уже времени нету Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.144 секунд. Запросов: 22.