LINUX.ORG.RU

QWidget::show() - Баг?

 


0

1
void MainWindow::trayIconClicked(QSystemTrayIcon::ActivationReason reason)
{
    if(reason == QSystemTrayIcon::Trigger)
    {
        if(isHidden())
        {
            QPoint tmp = pos();
            show();
            qDebug() << "Previous geometry: " << geometry();
            move(0, 0); // Если убрать эту строку, то все летит к чертям.
            qDebug() << "New Geometry: " << geometry();
            move(tmp);
        } else {
            hide();
        }
    }
}

https://github.com/Slezyr/qtbug

Попытался сделать скрытие в трей и увяз в этой затее на 5 часов.

  1. Запускаем программу
  2. Двигаем окно в произвольное место
  3. Скрываем его нажатием на иконку в трее
  4. Жмем на иконку ещё раз, чтобы открыть окно. Окно появляется в том же месте, где мы его и оставили.

Собираем программу опять, но без move(0, 0) и окно появляется в одном из углов экрана.

P.S. Arch Linux 64, Qt 5.2.1

Если это баг, то помогите его оформить.

★★★

Последнее исправление: frozenix (всего исправлений: 4)
Ответ на: комментарий от Y
../bug/mainwindow.cpp: In member function 'void MainWindow::trayIconClicked(QSystemTrayIcon::ActivationReason)':
../bug/mainwindow.cpp:34:23: error: 'setPos' was not declared in this scope
             setPos(tmp);
frozenix ★★★
() автор топика
Ответ на: комментарий от frozenix

А если вообще не вызывать move?

move, видимо двигает на x от предыдущей позиции, но когда делаешь hide текущая позиция же по-идее, не должна забываться.

Y ★★
()
Ответ на: комментарий от Y

Она и не забывается! :3

Previous geometry:  QRect(778,402 400x400) 
New Geometry:  QRect(1,20 400x400) 

Если не вызывать вообще move - появится в угле экрана, если вызвать move с таким же значением - опять угол. Если изменить значение на рандом, а затем на старое - нормально.

При этом пишет, что геометрию помнит, а появляется в угле.

frozenix ★★★
() автор топика
Ответ на: комментарий от aol

One of our mostly harmless robots seems to think you are not a human.

Because of that, it's hidden your profile from the public. If you really are human, please contact support to have your profile reinstated.

We promise we won't require DNA proof of your humanity.

Оно говорит, что я г-но, а не человек :[

https://github.com/Slezyr/qtbug/archive/master.zip

http://ubuntuone.com/3cPKHwJYJMTK3wgAN8lCvF

frozenix ★★★
() автор топика
Последнее исправление: frozenix (всего исправлений: 1)
Ответ на: комментарий от aol

Поправили, реактивно поддержка сработала :)

frozenix ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.