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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Специалистам QTable вопрос...  (Прочитано 6885 раз)
Const
Гость
« : Апрель 15, 2005, 15:34 »

Доброго времени суток!
Пусть у меня имеется объкет QTable с некоторым количеством строк и столбцов.
1. Как сделать подстветку QtableItem над которым в данный момент находится указатель мыши?
2. Как нарисовать прямоугольник поверх нескольких QTableItem? Скажем, если, например, я хочу выделить несколько айтемов с помощью резинового контура?
Спасибо за советы!
Записан
Hellenna
Гость
« Ответ #1 : Апрель 15, 2005, 16:12 »

Цитата: "Const"

1. Как сделать подстветку QtableItem над которым в данный момент находится указатель мыши?

отлавливать событие mouseMoveEvent:
Код:
void myTable::mouseMoveEvent(QMouseEvent *e)
{
    QPainer *painter=new QPainter(this);
    //устанваливаешь параметры painter
    painter.setColor(Qt::red);
    ...
    int row=rowAt(e->y());
    int col=columnAt(e->x());
    paintCell(painter, row, col, cellGeometry(row, col));
}

Цитата: "Const"
2. Как нарисовать прямоугольник поверх нескольких QTableItem? Скажем, если, например, я хочу выделить несколько айтемов с помощью резинового контура?

аналогично, исппользуя paintCell.
можешь посмотреть пример из qt: statistic
Записан
Const
Гость
« Ответ #2 : Апрель 15, 2005, 16:59 »

mouseMove ивент не приходит! Сколько не вошкайся мышкой по таблице...  :evil:
Кстати, где можно найти пример statistic? Я у себя в Qt 3.3.. не нашел..  :shock:
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Апрель 15, 2005, 17:00 »

попробуй включить qApp->setGlobalMouseTraching(true);
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Sergeich
Гость
« Ответ #4 : Апрель 15, 2005, 17:39 »

Лучше написать уоurQTableInstance->setMouseTracking( true ), чтоб не генерить лишних событий.
Пример находится в $(QTDIR)/examples/table/statistics
Записан
Hellenna
Гость
« Ответ #5 : Апрель 15, 2005, 18:39 »

Цитата: "Const"
mouseMove ивент не приходит! Сколько не вошкайся мышкой по таблице...  :evil:

если mouseTracking=false, mouseMoveEvent возникает только при движении с нажатой кнопкой мыши (какой неважно).

Еще есть enterEvent(QEvent *e) и leaveEvent(QEvent *e) они возникают когда курсор мышы попадает на виджет и покидает его соответственно (при ненажатой кнопке).
Может они тебе больше подойдут.
Записан
Const
Гость
« Ответ #6 : Апрель 18, 2005, 12:37 »

Спасибо всем за советы и участие!
Исследование показало, что ивенты типа MouseMove, MouseButtonClick до производного от QTable класса не доходят  :shock: Впрочем, до виджета, на территории которого располагается таблица - тоже. Как только мышь покидает территорию таблицы, так сразу все начинает работать. И mousemove и нажате и кнопок...
В общем, решить задачу с отслеживанием движения мыши по таблице мне так и не удалось... Хорошо хоть, что click работает...
Записан
Const
Гость
« Ответ #7 : Апрель 18, 2005, 15:29 »

Нашел способ как отслеживать движение мышкой. Нужно приделать функцию
    void contentsMouseMoveEvent( QMouseEvent *e );
и будет щастье...  :roll:
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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