Название: смена активного окна в MDI-приложении Отправлено: mokynis от Июнь 27, 2010, 04:58 Учу Qt по Шлее, дошел до MDI-приложения. Все, вроде, понятно, но никак не получается сделать так, чтобы при смене активного child-окна в заголовке main-окна отобразился заголовок активного. Если соединяю subWindowActivated со своим слотом changeTitle, то при попытке открыть файл, если уже открыто хоть одно child-окно (не важно, новое или с уже имеющимся файлом), программа "неожиданно завершает работу". Подскажите, пожалуйста, что не так?
вот кусок mdi.cpp Код: #include "mdi.h" Код: .............. Название: Re: смена активного окна в MDI-приложении Отправлено: sendevent от Июнь 27, 2010, 06:09 либо с приведенными кусками кода все норм, либо мне совсем пора спать. наверно, надо глянуть в неурезанные исходники, а пока расскажи, откудова определил, что проблема именно в childw::slotLoad, а не в том же mdi::slotLoad (всмысле, createNewDoc стопудова возвращает валидный указатель? стопудова-стопудова? а если найду?) и што происходит внутри childw::changeTitle. (вызывает подозрение строка
Код: connect(ui->mdiArea,SIGNAL(subWindowActivated(QMdiSubWindow*)),this,SLOT(changeTitle())); вообще же, я залез сюда просто глянуть, хто способен в вс в 6 утра (utc+3) задавать вопросы, и ничего писать не собирался - щас прийдет хтонить более головастый и покажет ошибку, которую я не заметил, я же - спааать, разбираться бум чуть позжее =) Название: Re: смена активного окна в MDI-приложении Отправлено: pastor от Июнь 27, 2010, 10:51 Покажи стек вызовов
Название: Re: смена активного окна в MDI-приложении Отправлено: mokynis от Июнь 27, 2010, 14:35 Цитировать Покажи стек вызовов Знать бы еще где его искать :(В общем, прикладываю все, даже с исполняемым файлом. Собиралось и писалось все в Qt Creator 1.2.1, Qt 4.5.2 Название: Re: смена активного окна в MDI-приложении Отправлено: sendevent от Июнь 27, 2010, 15:24 Цитата: QAssistant QMdiSubWindow * QMdiArea::activeSubWindow () const это значит, что везде, где ее используешь, надо проверять полученный указатель:Returns a pointer to the current active subwindow. If no window is currently active, 0 is returned. Код: void mdi::changeTitle() Название: Re: смена активного окна в MDI-приложении Отправлено: mokynis от Июнь 28, 2010, 08:20 Цитировать надо проверять полученный указатель Спасибо, под Windows заработало! Вечером дома на Linux'е проверю, но, наверное, это и есть мой косяк |