Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Гуся от Июль 09, 2018, 14:31



Название: QFileDialog открывается 2 раза
Отправлено: Гуся от Июль 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;
}


Название: Re: QFileDialog открывается 2 раза
Отправлено: Alex Custov от Июль 09, 2018, 14:58
Не пойму из-за чего это может происходить.

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


Название: Re: QFileDialog открывается 2 раза
Отправлено: Alex Custov от Июль 09, 2018, 15:09
Цитировать
if (outputFile == NULL) {

Вас ист дас?