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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [SOLVED] QDialog. Добавление своих действий перед exec()  (Прочитано 4403 раз)
Fat-Zer
Гость
« : Апрель 25, 2012, 09:02 »

хочу выполнить свои действия при exec().
переопределение exec() работает, но это не очень хорошая идея, ибо он не виртуальный...

есть другие идеи?
« Последнее редактирование: Апрель 25, 2012, 10:35 от Fat-Zer » Записан
Syveren
Гость
« Ответ #1 : Апрель 25, 2012, 09:14 »

Какого формата действия?
Можно добавить метод
int myExec(....)
{ ..... ;
  return this->exec();
}   
Записан
twp
Гость
« Ответ #2 : Апрель 25, 2012, 09:30 »

Есть виртуальные слоты
Код
C++ (Qt)
void QDialog::accept ()
void QDialog::done (int r)
void QDialog::reject()
 
Все зависит от того, что в итоге нужно получить.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 25, 2012, 10:15 »

есть другие идеи?
Перегрузи setVisible().
Записан

Qt 5.11/4.8.7 (X11/Win)
Fat-Zer
Гость
« Ответ #4 : Апрель 25, 2012, 10:21 »

Какого формата действия?
в данном случае - запуск другого диалога
Код
C++ (Qt)
int MYDialog::exec() {
   QFileDialog fd(this);
 
   if(!fd.exec()) {
       return QDialog::Rejected;
   }
 
   ui->leFile->setText(fd.selectedFiles().at(0));
   return QDialog::exec();
}
Можно добавить метод
int myExec(....)
те же яйца, что и переопределение exec(), только в профиль...

Есть виртуальные слоты

Все зависит от того, что в итоге нужно получить.
не в тему это...
Перегрузи setVisible().
пожалуй лучший вариант...
[added]
на этом и порешил, спасибо.
Код
C++ (Qt)
void MYDialog::setVisible(bool visible) {
   if(visible) {
       QFileDialog fd(this);
 
       if(!fd.exec()) {
           this->reject();
           return;
       }
 
       ui->leFile->setText(fd.selectedFiles().at(0));
   }
 
   QDialog::setVisible(visible);
}
« Последнее редактирование: Апрель 25, 2012, 10:35 от Fat-Zer » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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