Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: daimon от Апрель 27, 2010, 22:51



Название: QRubberBand
Отправлено: 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
Как решить проблему?


Название: Re: QRubberBand
Отправлено: m_ax от Апрель 27, 2010, 23:45
Цитировать
rubberBand->rect().left() выдает всегда 0
Ничего удивительного)

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

 


Название: Re: QRubberBand
Отправлено: m_ax от Апрель 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()). 

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


Название: Re: QRubberBand
Отправлено: m_ax от Апрель 28, 2010, 00:10
Цитировать
Можна как то вернуть rect с начальными координатами и шириной и высотой?
Можно))

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

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