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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileDialog открывается 2 раза  (Прочитано 2508 раз)
Гуся
Гость
« : Июль 09, 2018, 14:31 »

Проблема такая: я прикрепил открытие QFileGiallog  к сигналу клика кнопки и при нажатии появляется диалоговое окно (всё как надо), но при закрытии этого окна (всё равно выбрал я файл или нет) открывается ещё одно.
Не пойму из-за чего это может происходить.

Код
C++ (Qt)
connect(ui->outputButton, SIGNAL(clicked()), SLOT(on_outputButton_clicked()));
 
Сам слот:
Код
C++ (Qt)
void MainWindow::on_outputButton_clicked()
{
   outputFile = QFileDialog::getOpenFileName(0,
                                                     QString::fromUtf8("Choose File"),
                                                     QDir::currentPath(),
                                                     "CSV (*.csv )");
   if (outputFile == NULL) {
       ui->outputText->setText("No choose file");
   } else {
       cutFileName(outputFile, ui->outputText);
   }
   return;
}
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Июль 09, 2018, 14:58 »

Не пойму из-за чего это может происходить.

Из-за того, что твой слот имеет стандартное имя и распознаётся метасистемой Qt. Поэтому Qt автоматически создаёт к нему подключение с помощью QMetaObject::connectSlotsByName() (см. сгенерированный ui_...cpp файл). Ты создаёшь второе подключение вручную. Как результат, слот вызывается два раза подряд.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Июль 09, 2018, 15:09 »

Цитировать
if (outputFile == NULL) {

Вас ист дас?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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