Russian Qt Forum
Ноябрь 26, 2024, 02:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Active window  (Прочитано 2394 раз)
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(); но это не помогает.
Записан
Bepec
Гость
« Ответ #1 : Сентябрь 11, 2014, 13:40 »

Вы страдаете фигнёй. Приводите код и мы вам его обругаем. А потом покажем как надо делать. Но без кода этого делать никто не будет Веселый
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Сентябрь 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.
Записан
qt_newer
Гость
« Ответ #3 : Сентябрь 11, 2014, 16:34 »

Удалось самостоятельно разобраться: qApp->setActiveWindow(this);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 22.