Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Проверить открыто ли окно формы


Автор: NZero 9.11.2011, 16:39
Есть две формы независимые друг от друга. Как проверить в одной форме открыта ли вторая? 

Автор: newbee 9.11.2011, 16:52
QWidget::isVisible()

rtfm!

Автор: NZero 9.11.2011, 17:10
В линуксе эта функция не работает(

Автор: bsa 9.11.2011, 17:22
Цитата(NZero @  9.11.2011,  18:10 Найти цитируемый пост)
В линуксе эта функция не работает( 

Да ладно? Формы, случаем, не из разных приложений? Если из разных, то ищи в инете QSingleApplication.

Автор: math64 9.11.2011, 19:12
Для того, чтобы вызвать isVisible(), нужно иметь указатель на виджет. А если вижеты независимы, то чтобы узнать какие ещё виджеты существуют, нужно обратиться к приложению. Приложение всегда доступно через qApp.
Код

foreach (QWidget *widget, QApplication::topLevelWidgets()) {
  if (widget->isVisible() ) {
    ...
  }
}


Автор: NZero 10.11.2011, 10:03
Вот код который открывает вторую форму из первой
Код

void FormCreateBNetwork::button_click_help()
{
    FormGenHelp *formhelp = new FormGenHelp();
        formhelp->show();
        formhelp->activateWindow();       
}


Как проверить, что форма FormGenHelp уже открыта?

Автор: newbee 10.11.2011, 10:19
Цитата(NZero @  10.11.2011,  11:03 Найти цитируемый пост)
Как проверить, что форма FormGenHelp уже открыта? 
Сделай formhelp членом своего класса, создай его один раз в конструкторе, в button_click_help вызывай this->formhelp->show().

Автор: bsa 10.11.2011, 10:32
Код
FormGenHelp *form = qApp->findChild<FormGenHelp*>();
if (form) {
   ...
}

Автор: NZero 2.12.2011, 14:02
Все решил задачу!
Всем спасибо!

Автор: bsa 2.12.2011, 14:22
NZero, ну так пометь тему решенной

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)