crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Проверка нажатия кнопки ОК
AD
  опции профиля:
сообщение 26.8.2008, 16:40
Сообщение #1


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Помогите, пожалуйста! Немного запутался. Есть немодальный диалог, как проверить из главного окна, что на нем нажали кнопку OK, а не Cancel, к примеру?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 26.8.2008, 16:42
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

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




Репутация:   17  


Генерируй разные сигналы, а в главном окне на них подпишись.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.8.2008, 16:45
Сообщение #3


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата
Генерируй разные сигналы, а в главном окне на них подпишись.

а можно пример? Что-то до меня не доходит, мозги плавятся. Прошу прощения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.8.2008, 17:05
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Пример из Асистента:
// A modeless dialog: 
void EditorWindow::find()
{
     if (!findDialog) {
         findDialog = new FindDialog(this);
         connect(findDialog, SIGNAL(findNext()), this, SLOT(findNext()));
     }

     findDialog->show();
     findDialog->raise();
     findDialog->activateWindow();
}


и стандартные сигналы:
void accepted ()
void finished ( int result )
void rejected ()

QDialog Class Reference
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.8.2008, 17:16
Сообщение #5


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Litkevich Yuriy @ 26.8.2008, 18:05) *
стандартные сигналы:
void accepted ()
void finished ( int result )
void rejected ()

QDialog Class Reference

Видел я этот пример. Я все-равно не понимаю. Там нет решения. Причем неясно, чем является findNext() - сигналом или слотом? ну серьезно, не понимаю, как? Неужели создавать свои переменные булевского типа и менять значение при входе в слоты нажатия OK, Cancel?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.8.2008, 17:22
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


ты можешь сделать так
connect(MyDialog, SIGNAL(finished ( int)), this, SLOT(MySlot(int)));

где MyDialog, наследник QDialog и
MyClass::MySlot (int result)
{
   if (result == QDialog::Accepted)
   {
        // Ок
   }
   else
   {
        // Cansel
   }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 26.8.2008, 17:23
Сообщение #7


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Нашел!
Цитата
Constant
Value
QDialog::Accepted 1
QDialog::Rejected 0


P.S. решение практически одновременно нашли! :)

Сообщение отредактировал AD - 26.8.2008, 17:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.1.2020, 9:44