crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Cделать окно модальным
++Norton++
  опции профиля:
сообщение 9.3.2009, 14:26
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


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

Но переключение все равно было возможным :(
Помогите разобраться пожалуйста!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.3.2009, 14:29
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


?
new NewWindow(this);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
++Norton++
  опции профиля:
сообщение 9.3.2009, 14:36
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


Нет, немного не то. Имеется ввиду чтобы открывалось окно (новое) но переключиться на предыдущее было нельзя. (типа диалога Save as...: т.е. мы в этом диалоге можем щелкать что хотим, но пока его не закроем, с основным окном программы работать не можем)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.3.2009, 14:37
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


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

А ты пробовал компилить то, что я предложил?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 9.3.2009, 14:37
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 108 раз(а)




Репутация:   23  


используй
Цитата
QDialog::exec()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
++Norton++
  опции профиля:
сообщение 9.3.2009, 14:43
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 98
Регистрация: 5.10.2008
Пользователь №: 380

Спасибо сказали: 0 раз(а)




Репутация:   1  


SABROG, да, попробовал, дело в том, что в этом случае открывается новый диалог, в этом же окне (новое не создается). :(


kwisp, но я так понял это применимо только к QDialog? А к QWidget?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 9.3.2009, 14:45
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 108 раз(а)




Репутация:   23  


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

так точно.
не изобретай велосипед. скорее всего подойдет стандартный способ решения:)
здесь что то было подобное
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 9.3.2009, 14:57
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 215 раз(а)




Репутация:   34  


Набросал 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();


Сообщение отредактировал SABROG - 9.3.2009, 15:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.5.2018, 10:09