(Qt C ++) Отправить значение int из диалога в MainWindow?

Я довольно новичок в 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 никогда ничего не показывает ???

Так как я могу заполнить йо из главного окна йоло из диалогового окна?

Извините, если я не объяснил это хорошо 🙁 Я все еще учусь.
Спасибо за ваше время 🙂

0

Решение

Прежде всего, нет необходимости дважды вызывать 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’.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]