Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cделать окно модальным
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
++Norton++
По нажатии на кнопку открывается еще одно окно. И все бы нормально, но хотелось бы, чтобы переключаться между этими окнами было невозможно (т.е. пока второе окно открыто, работа с первым невозможна). Как это можно реализовать?
Пробовал так:
NewWindow *nw = new NewWindow;
nw->setWindowModality(Qt::WindowModal) //кажется так...
nw->show();

Но переключение все равно было возможным :(
Помогите разобраться пожалуйста!
SABROG
?
new NewWindow(this);
++Norton++
Нет, немного не то. Имеется ввиду чтобы открывалось окно (новое) но переключиться на предыдущее было нельзя. (типа диалога Save as...: т.е. мы в этом диалоге можем щелкать что хотим, но пока его не закроем, с основным окном программы работать не можем)
SABROG
Цитата(++Norton++ @ 9.3.2009, 14:36) *
Нет, немного не то. Имеется ввиду чтобы открывалось окно (новое) но переключиться на предыдущее было нельзя. (типа диалога Save as...: т.е. мы в этом диалоге можем щелкать что хотим, но пока его не закроем, с основным окном программы работать не можем)

А ты пробовал компилить то, что я предложил?
kwisp
используй
Цитата
QDialog::exec()
++Norton++
SABROG, да, попробовал, дело в том, что в этом случае открывается новый диалог, в этом же окне (новое не создается). :(


kwisp, но я так понял это применимо только к QDialog? А к QWidget?
kwisp
Цитата(++Norton++ @ 9.3.2009, 14:43) *
kwisp, но я так понял это применимо только к QDialog? А к QWidget?

так точно.
не изобретай велосипед. скорее всего подойдет стандартный способ решения:)
здесь что то было подобное
SABROG
Набросал 2 варианта:

    QEventLoop el(this);
    QWidget wid(this, Qt::Dialog);
    QPushButton btn("Exit", &wid);
    connect(&btn, SIGNAL(clicked()), &el, SLOT(quit()));
    wid.setWindowModality(Qt::WindowModal);
    wid.show();
    el.exec();


    QEventLoop el(this);
    QWidget *wid = new QWidget(this, Qt::Dialog);
    QPushButton *btn = new QPushButton("Exit", wid);
    connect(btn, SIGNAL(clicked()), &el, SLOT(quit()));
    wid->setWindowModality(Qt::WindowModal);
    wid->show();
    el.exec();
    wid->deleteLater();
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.