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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: как узнать размеры курсора ?  (Прочитано 8618 раз)
Exception13
Гость
« : Июль 21, 2009, 15:13 »

Поиск по форуму ответа не дал, так что решил обратиться к сообществу...
Вобщем хочу узнать размер курсора мыши установленного для конкретного виджета.

варианты типа:
const QBitmap *bm = cursor().bitmap()

bm->width(),
bm->height()

не прокатывают т.к. если в системе используется стандартный курсор, то "cursor().bitmap()" возвращает NULL.

Может в QT есть что то типа GetSystemMetrics как в виндовсе ?
Записан
Exception13
Гость
« Ответ #1 : Июль 27, 2009, 08:15 »

Видимо вопрос был совсем ламерский, никто не хочет отвечать Улыбающийся
Ну и ладно, пойдем по пути наименьшего сопротивления и забъем в код фиксированные размеры курсора...
Записан
BigZ
Гость
« Ответ #2 : Июль 27, 2009, 08:45 »

Видимо вопрос был совсем ламерский, никто не хочет отвечать Улыбающийся
Ну и ладно, пойдем по пути наименьшего сопротивления и забъем в код фиксированные размеры курсора...
Прошу прощения, к делу по сути не относится, а в какой задаче может понадобиться получение
размеров курсора в рантайме?
Записан
Exception13
Гость
« Ответ #3 : Июль 27, 2009, 16:33 »

У меня самописный компонент типа "шкала времени", при наведении курсора мыши на данный виджет, хотелось бы чтобы рядом с курсором появилось окно с датой/временем.
вобщем, что то типа toolTip'a. Думал все, что можно как то обычный toolTip прикрутить - но, что то ничего и не придумал. В конце концов сделал простенький widget для отображения даты/времени и стал его выводить рядом с курсором мыши.
hotSpot у курсора известен, а вот его геометрия - нет.
Размеры курсора мне бы хотелось узнать для того, чтобы вывести этот toolTip под стрелочкой мыши, но так, чтобы она его не перекрывала.

Выглядит сие художество примерно так:
« Последнее редактирование: Июль 27, 2009, 16:39 от Exception13 » Записан
spectre71
Гость
« Ответ #4 : Июль 27, 2009, 17:19 »

У меня самописный компонент типа "шкала времени", при наведении курсора мыши на данный виджет, хотелось бы чтобы рядом с курсором появилось окно с датой/временем.
вобщем, что то типа toolTip'a. Думал все, что можно как то обычный toolTip прикрутить - но, что то ничего и не придумал.  не перекрывала.
Воспользуйся QToolTip::showText; QToolTip::hideText;
Примерно так

Код
C++ (Qt)
void MyWidget::mouseMoveEvent(QMouseEvent* e) {
 QString MyHint = getMyHiintByPosition(e->pos())
 if(MyHint .isEmpty()) {
   QToolTip::hideText();
 } else {
   QToolTip::showText(e->globalPos(), MyHint, this);
 }
}



Записан
BigZ
Гость
« Ответ #5 : Июль 27, 2009, 22:48 »

У меня самописный компонент типа "шкала времени", при наведении курсора мыши на данный виджет, хотелось бы чтобы рядом с курсором появилось окно с датой/временем.
вобщем, что то типа toolTip'a. Думал все, что можно как то обычный toolTip прикрутить - но, что то ничего и не придумал. В конце концов сделал простенький widget для отображения даты/времени и стал его выводить рядом с курсором мыши.
hotSpot у курсора известен, а вот его геометрия - нет.
Размеры курсора мне бы хотелось узнать для того, чтобы вывести этот toolTip под стрелочкой мыши, но так, чтобы она его не перекрывала.

Выглядит сие художество примерно так:

Теперь понятно.
Записан
Exception13
Гость
« Ответ #6 : Июль 28, 2009, 09:13 »

Воспользуйся QToolTip::showText; QToolTip::hideText;

А, не, я так уже пробовал, ToolTip всплывает ооооооооооочень ммееедленно, т.е. пока курсор мыши стоит в какой либо позиции достаточно длительное время - подсказка вылезает, а мне бы хотелось чтобы он следовал вместе с курсором мыши. Где определяется время задержки для данного компонента - я так и не нашел.
Записан
spectre71
Гость
« Ответ #7 : Июль 28, 2009, 10:47 »

Воспользуйся QToolTip::showText; QToolTip::hideText;
А, не, я так уже пробовал, ToolTip всплывает ооооооооооочень ммееедленно, т.е. пока курсор мыши стоит в какой либо позиции достаточно длительное время - подсказка вылезает, а мне бы хотелось чтобы он следовал вместе с курсором мыши. Где определяется время задержки для данного компонента - я так и не нашел.
Ничего подобного.
1) QToolTip::showText - всплывает сразу, при вызове! и по новым координатам если:
  - В данный момент нет видимого ToolTip
  ИЛИ
  - В данный момент есть видимый ToolTip, но с другим текстом!
  ИЛИ
  - В данный момент есть видимый ToolTip, с этим же текстом, но на другом виджите!
2) В остальных случаях изменений не будет
3) А вот hideText или что то же самое showText от пустой строки, всегда срабатывает с задержкой, но это меньшее из зол.
4) Ты либо вызывал QToolTip::showText на событие QEvent::ToolTip, либо делал виджету setToolTip, в этом случае и будет задержка!
5) Сделай простой тест и убедишься сам:

Код
C++ (Qt)
void MyWidget::mouseMoveEvent(QMouseEvent* e) {
 QString MyHint = QString::number(e->pos().x()) + "," + QString::number(e->pos().y());
 QToolTip::showText(e->globalPos(), MyHint, this);
}


 
Записан
Exception13
Гость
« Ответ #8 : Июль 28, 2009, 13:37 »

О, спасибо, вот про эти если... я и не прочитал доку, сейчас глянул, действительно так и есть.
Еще раз спасибо тов. Spectre
Записан
SASA
Гость
« Ответ #9 : Июль 29, 2009, 14:50 »

И всё же, как узнать размеры курсора ?
Записан
spectre71
Гость
« Ответ #10 : Июль 30, 2009, 08:22 »

И всё же, как узнать размеры курсора ?
Своего легко, по размерам Bitmap.
Стандартных, видимо только по вбитым константам!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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