Я довольно новичок в C ++ и Qt. Я довольно далеко продвинулся в своем текущем проекте, но я откладывал эту часть. У меня есть кнопка, которая открывает новый диалог, как это:
void MainWindow::on_fillAll_clicked()
{
int yo;
BlockSelect bSelect;
bSelect.setModal(true);
bSelect.exec();
if( bSelect.exec() == QDialog::Accepted )
{
//Get stuff here?
//I want to fill yo with the spinbox value
yo = bSelect.stuff();
return;
}
qDebug() << yo;
}
Это отлично работает. В диалоге у меня есть спин-бокс. Я хочу отправить это значение, введенное в поле прокрутки, в главное окно, когда пользователь нажимает кнопку ОК.
Я пытался получить «Int Yo;» чтобы получить это значение из spinbox, но все, что я пытаюсь, просто получает ошибку.
Я добавил это в мой открытый класс BlockSelect:
int stuff();
И я сделал эту функцию в моем blockselect.cpp:
int BlockSelect::stuff()
{
qDebug() << "The function was called";
return ui->yolo->value();
}
Но qDebug никогда ничего не показывает ???
Так как я могу заполнить йо из главного окна йоло из диалогового окна?
Извините, если я не объяснил это хорошо 🙁 Я все еще учусь.
Спасибо за ваше время 🙂
Прежде всего, нет необходимости дважды вызывать exec (), просто используйте его один раз в операторе if.
Чтобы ответить на ваш вопрос, у вас все еще есть объект диалога bSelect (и я предполагаю, что BlockSelect — это класс, который вы определили?), Поэтому создайте в нем функцию доступа, чтобы получить нужные значения.
if( bSelect.exec() == QDialog::Accepted )
{
//Get stuff here?
//I want to fill yo with the spinbox value
yo = bSelect.stuff();
return;
}
РЕДАКТИРОВАТЬ:
Ваш класс BlockSelect должен содержать функцию доступа, то есть функцию, которая возвращает значение.
int stuff() { return ui->yolo->value();}
То, что я делаю здесь, это получение значения spinbox (при условии, что оно называется ‘yolo’) и возвращение его в результате вызова функции ‘stuff’.
Других решений пока нет …