crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

lucifer_vrn
  опции профиля:
сообщение 13.5.2009, 20:33
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 19
Регистрация: 27.2.2009
Пользователь №: 580

Спасибо сказали: 3 раз(а)




Репутация:   0  


сразу, все о чем идет речь сугобо проявляется под линуксом. По виндой все прекрасно.
что происходит:
когда я вызываю функцию QWidget::pos() с некоторой переодичностью, ко мне возвращается QPoint(0,0), хотя координата окна у меня явно не 0,0. Чуть реже но бывает, возвращает не правильную позицию окна +-5 пикселей по вертикали. я в шоке. промучался, вычитал в асисте в статье:
http://doc.crossplatform.ru/qt/en/4.5.0/geometry.html
Цитата
Don't be surprised if you find one where QWidget::frameGeometry() returns wrong results though.

теперь я уже не просто в шоке, а в полном шоке.
помучался, нашел небольшой выход -
QWidget::mapToGlobal(QPoint(0,0))
такой вызов уже (0,0) не возвращает, но +-5 пикселей от реальных координат возвращает.
ппц. я в полном шоке.
можно ли как нибудь достоврено получить координаты окна под Х11 ????

мой код примерно такой:

bool CommunicatorWidget::eventFilter ( QObject * watched, QEvent * event )
{

    if (watched == leftWidget_)
    {
        if (event->type() == QEvent::Hide && !isDock_ && leftWidget_->parent() == 0)
        {
            QPoint pos = leftWidget_->pos();
            if ( pos == QPoint(0,0))
                pos = leftWidget_->mapToGlobal(pos);
            qDebug() << "leftPosSave " << pos;
            Settings::CommunicatorWidget::setLeftWidgetRect(QRect(pos,leftWidget_->size()));
        }
    }
    return QWidget::eventFilter(watched,event);
}

тыкая туда - сюда окно(close()/show()) я вижу как в дебаге возвращается координата, которая по не понятным причинам в случайны момент начинает плыть то на 5 пикселей вврех, то на 5 пикселей вниз....
Причина редактирования: используй тэг code
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 28.6.2025, 2:12