Название: Active window Отправлено: qt_newer от Сентябрь 11, 2014, 13:34 Есть QWidget приложение с единственным окном (сверху заголовок, внизу управляющие кнопки, в середине изменяемая часть- переключение между различными виджетами). Когда новый файл копируется в папку QtTest, приложение запускает парсер, получает запись с различными полями из этого файла и передает ее в интерфейс пользователя.
В main.cpp: MainWindow w; w.show(); Parser p; QFileSystemWatcher watcher; watcher.addPath("C:/QtTest"); a.connect(&watcher, SIGNAL(directoryChanged(QString)), &p, SLOT(getData(QString))); // после окончания парсинга из слота парсера посылается сигнал в MainWindow a.connect(&p, SIGNAL(test_signal(Record*)), &w, SLOT(test_slot(Record*))); Теперь в test_slot после получения записи я хочу отобразить ее в интерфейсе- для этого запускаю функцию замены центральной части на соответствующий виджет, из которого хочу получить ссылку на MainWindow: win = (MainWindow *) QApplication::activeWindow() но ссылка не работает, т.к. активным окном, насколько я понимаю, MainWindow в этот момент не является. Пытаюсь в слоте: MainWindow::test_slot сделать что-то типа: this->activateWindow(); но это не помогает. Название: Re: Active window Отправлено: Bepec от Сентябрь 11, 2014, 13:40 Вы страдаете фигнёй. Приводите код и мы вам его обругаем. А потом покажем как надо делать. Но без кода этого делать никто не будет :D
Название: Re: Active window Отправлено: Igors от Сентябрь 11, 2014, 15:07 из которого хочу получить ссылку на MainWindow: win = (MainWindow *) QApplication::activeWindow() но ссылка не работает, т.к. активным окном, насколько я понимаю, MainWindow в этот момент не является. Пытаюсь в слоте: MainWindow::test_slot сделать что-то типа: this->activateWindow(); но это не помогает. Код
Название: Re: Active window Отправлено: qt_newer от Сентябрь 11, 2014, 16:34 Удалось самостоятельно разобраться: qApp->setActiveWindow(this);
|