Название: Регресс в QMdiSubWindow? Отправлено: uriel от Январь 04, 2010, 16:14 Пересобрал рабочий проект с 4.6 (до этого был на 4.5) и получил под линуксом кучу warning'ов при запуске.
Как оказалось, у меня поведение воспроизводится элементарно. Код На выходе получаю в консоль "QWidget::setMinimumSize: (/QMdi::ControlLabel) Negative sizes (-1,-1) are not possible". Может кто-нибудь проверить это у себя, если не трудно? P.S. Сижу на Арче под KDE, все пакеты последние. На 4.5.3 такого поведения нет, под виндой тоже, даже с 4.6.0. Название: Re: Регресс в QMdiSubWindow? Отправлено: BRE от Январь 04, 2010, 16:38 А для чего ты так делаешь? ;)
Цитировать The most common way to construct a QMdiSubWindow is to call QMdiArea::addSubWindow() with the internal widget as the argument. You can also create a subwindow yourself, and set an internal widget by calling setWidget(). Название: Re: Регресс в QMdiSubWindow? Отправлено: uriel от Январь 04, 2010, 17:29 Отвечает Александр Друзь. :)
Просто проект писался очень давно, ещё в пору изучения Qt и я почему-то решил отнаследоваться от QMdiSubWindow, так что предупреждение вылетает при инициализации базового класса. В принципе перекроить там не особо сложно, спасибо за наводку. ;) Название: Re: Регресс в QMdiSubWindow? Отправлено: uriel от Январь 04, 2010, 18:00 А тем временем ничего не изменилось.
Код
Название: Re: Регресс в QMdiSubWindow? Отправлено: crossly от Январь 04, 2010, 22:03 Пересобрал рабочий проект с 4.6 (до этого был на 4.5) и получил под линуксом кучу warning'ов при запуске. Как оказалось, у меня поведение воспроизводится элементарно. Код На выходе получаю в консоль "QWidget::setMinimumSize: (/QMdi::ControlLabel) Negative sizes (-1,-1) are not possible". Может кто-нибудь проверить это у себя, если не трудно? P.S. Сижу на Арче под KDE, все пакеты последние. На 4.5.3 такого поведения нет, под виндой тоже, даже с 4.6.0. вы создали QMdiSubWindow, но не создали QMdiArea.... и не добавили окно в него.... странно.... что вы хотели этим добиться...?? Название: Re: Регресс в QMdiSubWindow? Отправлено: uriel от Январь 04, 2010, 22:58 Конкретно этим примером - минимальных условий для получения предупреждения. :)
Чуть ниже я выложил более "правильный" код, который, тем не менее, всё равно его кидает. Название: Re: Регресс в QMdiSubWindow? Отправлено: crossly от Январь 05, 2010, 13:40 возможно потому что на момент создания subwindow размер главного окна и MdiArea еще не известен.... ?
Название: Re: Регресс в QMdiSubWindow? Отправлено: uriel от Январь 05, 2010, 15:59 Так, причина нашлась, только понятнее не стало.
Внутренний класс ControlLabel (как-бы-системное-меню для дочерних окон) в конструкторе устанавливает свой размер в зависимости от размера иконки приложения (QApplication::windowIcon()), а так как явно я никакой иконки не вешал, то её нет и отсюда и берутся те самые (-1, -1) в качестве размера. Короче, на самом деле изменения в поведении вот здесь: Код В 4.5 мы получим (0, 0), а в 4.6 (-1, -1), хотя и там и там первая строка выводит true. Буду копать дальше. :) |