Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qt_newer от Сентябрь 11, 2014, 13:34



Название: 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(); но это не помогает.
Код
C++ (Qt)
QWidget * QWidget::window() const
Returns the window for this widget, i.e. the next ancestor widget that has (or could have) a window-system frame.
 
If the widget is a window, the widget itself is returned.


Название: Re: Active window
Отправлено: qt_newer от Сентябрь 11, 2014, 16:34
Удалось самостоятельно разобраться: qApp->setActiveWindow(this);