QMessageBox Да, Нет, закрыть

Сначала у меня есть QMessageBox, и я хотел бы скрыть красный крест (закрыть). Я пробовал с WindowFlags, но у меня не получилось.

Во-вторых, этот QMessageBox не может быть закрыт пользователем, но может быть закрыт кодом. И когда он закрывается, я бы не хотел, чтобы он выполнял код ответа «Нет» (или «Да»).


person artoon    schedule 22.08.2013    source источник
comment
Да, я пробовал с setWindowFlags(Qt::Dialoq | Qt::WindowCloseButtonHint) и решением: qtcentre.org/threads/41269-disable-close-button-in-QMessageBox. Я думаю, что я сделаю свой собственный messageBox и решу две проблемы одновременно.   -  person artoon    schedule 22.08.2013


Ответы (2)


Вам не нужно отключать WindowCloseButtonHint? Так что-то вроде

mbox.setWindowFlags(mbox.windowFlags() ^ Qt::WindowCloseButtonHint);

Если вам сойдет с рук использование стандартной функциональности с чем-то вроде этого, тогда у вас будет меньше кода, который может пойти не так, и вам меньше нужно поддерживать.

person fleed    schedule 22.08.2013
comment
Мой QMessageBox - это Qt::tool, поэтому я попробовал messageBox.setWindowFlags((Qt::WindowFlags)(Qt::Tool ^ Qt::WindowCloseButtonHint)); но это не работает. - person artoon; 22.08.2013
comment
Вы пробовали это, получая существующие флаги окна и выполняя операцию XOR с WindowCloseButtonHint, как указано выше? - person fleed; 22.08.2013
comment
Да, я пробовал это: messageBox.setWindowFlags((Qt::WindowFlags)(messageBox.windowFlags() ^ Qt::WindowCloseButtonHint)); но это не работает. - person artoon; 23.08.2013

Это работает:

// Remove Window Close X icon
msgBox.setWindowFlags(Qt::WindowTitleHint | Qt::FramelessWindowHint); 
person Yann Go    schedule 28.10.2016