Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Day от Февраль 08, 2014, 20:46



Название: Странности MDI
Отправлено: Day от Февраль 08, 2014, 20:46
Весьма любопытно вел себя MDI. Несколько окон замечательно создавалось. Но стоило
одно из них расширить на всю область (кнопочкой "экран") как при создании следующего окна программа молча вылетала. Просто кончалась безо всяких сообщений
А иногда и через одно-два создание, честно, логики ее поведения я так и не смог уловить.
Вот так я создавал окно.
Код:
DSub::DSub(DMain *par) : QWidget()  
// par - это отцовское окно, унаследованнное от QMainWindow
// area -  QMdiArea, сделанная центральным иджетом
{
   su = par->area->addSubWindow(this);
   //su->setWindowFlags(windowFlags() 
   //   || Qt::WindowTitleHint | Qt::WindowSystemMenuHint);
   // Вот из-за этого программа молча слетала
Стоило убрать то, что закомментировано, и все прекрасно заработало

А это кусок h-файла
Код:
class DSub : public QWidget {
  Q_OBJECT
public:
  QMdiSubWindow *su;
В общем-то в данный момент это не так и важно. Работает - и слава Богу.
Но интересно, в чем же дело, чтоб на грабли эти больше не наступать... :)


Название: Re: Странности MDI
Отправлено: LisandreL от Февраль 08, 2014, 23:17
su->setWindowFlags(windowFlags()  
   || Qt::WindowTitleHint | Qt::WindowSystemMenuHint);
Первое или логическое вместо побитового.
Тем самым сбрасываете флаг Qt::SubWindow (и возможно ещё какие-то нужные) и всё начинает глючить.


Название: Re: Странности MDI
Отправлено: Day от Февраль 09, 2014, 13:35
Прошу прощения. Лишняя палка попала при переписывании. В самом деле там одна.
Проверил. Раскомментировал. Палка - одна (побитовая). Глюки возобновились.


Название: Re: Странности MDI
Отправлено: Day от Февраль 09, 2014, 14:40
Забыл уточнить. Windows XP, Qt 4.5


Название: Re: Странности MDI
Отправлено: lit-uriy от Февраль 09, 2014, 20:04
Может эти флаги не совместимы с Субокнами?


Название: Re: Странности MDI
Отправлено: Day от Февраль 10, 2014, 09:07
Может эти флаги не совместимы с Субокнами?
Видимо, так. Уже не помню, зачем я их поставил. Тем более, что в субокнах и без этих флагов все нужные кнопочки есть. Кажется, это было, когда я еще пытался без MDI этими окнами управлять.
Но любопытно, что программа вылетала без единого звука.
Одно утешает. Может быть потерянный мной день кому-то поможет в аналогичной ситуации... :)