Добрый день! Нужно создать окно внутри функции, во время выполнения

программы, и выйти из функции только при нажатии на кнопку. Далее мой код, при нажатии на кнопку программа падает. Подскажите, пожалуйста, как исправить ситуацию?

void foo()
{
QEventLoop eventLoop;

QWidget wgt;
QVBoxLayout lyt_vMain;
QPushButton btn_accept;

wgt.setLayout(&lyt_vMain);
lyt_vMain.addWidget(&btn_accept);

btn_accept.setText("Принять");

QObject::connect(&btn_accept, &QPushButton::clicked, [&](){ /* ... */ eventLoop.quit(); });

wgt.show();

eventLoop.exec();
}

13 ответов

37 просмотров

Для этого есть удобный QDialog вместе с exec(). Или даже QMessageBox + exec

Падает, потому что ты выходишь из eventLoop, функция завершается и твое окно, которое еще активно, уничтожается

Что вы хотите

Илья- Автор вопроса
. Azmiddin
Что вы хотите

Хочу чтобы при вызове функции создавалось диалоговое окно и программа не выходила из функции до тех пор, пока не была нажата кнопка, при этом, чтобы сигналы и слоты продолжали отрабатывать "на заднем фоне"

Илья
Хочу чтобы при вызове функции создавалось диалогов...

Почитайте документацию на QDialog там есть примеры блокирующего подхода.

Илья
Хочу чтобы при вызове функции создавалось диалогов...

Хотя при такой постановке вопроса вам все-таки нужен не блокирующий)

Илья- Автор вопроса
Илья- Автор вопроса
. Azmiddin
Там есть acept reject

Программа падает

Илья
Хочу чтобы при вызове функции создавалось диалогов...

auto question = new QMessageBox(QMessageBox::Question, "Вопрос?", "текст", QMessageBox::Yes | QMessageBox::No, this); question->setWindowModality(Qt::WindowModal); //модальное окно question->setAttribute(Qt::WA_DeleteOnClose); //удалять окно при закрытии connect(question, &QMessageBox::accepted, this, [this](){ /*что то натворить*/ }); question->show(); небольшая выдержка

Илья
Программа падает

Есть стандарный окно если это просто yes no блокирует главное окно. QDialog::information Or QDialog::critical..

Похожие вопросы

Обсуждают сегодня

Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Подскажите, пожалуйста, где в backende, или не в нем можно дату поправить? Логирует действия не в том часовом поясе
Лео
7
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Есть магистры regex в чате? Задача: нужно написать regex который мэтчит полные (без сокращений по типу ::1/128) ipv6 адреса кроме 2001:0df7:cef7:29f7:52f7:adf7:2cf7:4ff7, при ...
Илья
5
Всем привет В общем надо на странице вакансии вывести вакансии с hh, но когда я пишу код в разделе Code ошибка Invalid URL format. The URL should start with the forward slash...
A da
1
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
мне как апи hh написать?
A da
3
Привет! Подскажите может кто сталкивался, при создании купона выходит вот в таком виде окно. Как поправить это?
Ruslan
4
DataGrip не сканирует почему-то все таблицы, хотя раньше показывал их че за херня, сталкивались?
Magic
9
Карта сайта