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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QRubberBand  (Прочитано 3916 раз)
daimon
Гость
« : Апрель 27, 2010, 22:51 »

Как отловить координаты углов петли?

Код
C++ (Qt)
void Plotter::mousePressEvent(QMouseEvent *event)
{
 
 
 
 
    origin = event->pos();
    if (QRect(Margin, Margin,
graph.width_widget - 2 * Margin, graph.height_widget - 2 * Margin).contains(origin))
    // rubberBand = new QRubberBand(QRubberBand::Rectangle, this);  
{  rubberBand->setGeometry(QRect(origin, QSize()));
rubberBand->show();}
 
}
void Plotter::mouseMoveEvent(QMouseEvent *event)
{
 
    rubberBand->setGeometry(QRect(origin, event->pos()).normalized());
setWindowTitle(QString::number(rubberBand->rect().right())+" "+QString::number(rubberBand->rect().left()));
}
 
void Plotter::mouseReleaseEvent(QMouseEvent *event)
{
    rubberBand->hide();
    // determine selection, for example using QRect::intersects()
    // and QRect::contains().
}

rubberBand->rect().left() выдает всегда 0
Как решить проблему?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Апрель 27, 2010, 23:45 »

Цитировать
rubberBand->rect().left() выдает всегда 0
Ничего удивительного)

Замените rubberBand->rect().left() на rubberBand->x();

 
Записан

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

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #2 : Апрель 28, 2010, 00:01 »

Цитировать
спс. Объясните в чём причина моего 0
QRubberBand унаследован от QWidget. И свойство rect() - эт свойство QWidget.. Откройте справку в ассистенте по ентому методу:

rect : const QRect
This property holds the internal geometry of the widget excluding any window frame.

The rect property equals QRect(0, 0, width(), height()). 

Цитировать
Как узнать координаты нижнего левого угла, левого верхнего, правого верхнего и правого нижнего?
Сами догадаетесь))
Записан

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

Arch Linux Plasma 5
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Апрель 28, 2010, 00:10 »

Цитировать
Можна как то вернуть rect с начальными координатами и шириной и высотой?
Можно))

Цитировать
наверное метод geometry()

Нет ничего практичней хорошей теории, да?))
Записан

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

Arch Linux Plasma 5
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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