Как я могу показать окно сообщения с надписью «Не показывать снова»?QMessageBox с «Не показывать это снова» checkbox
я представляю себе что-то, что выглядит следующим образом:
Как я могу показать окно сообщения с надписью «Не показывать снова»?QMessageBox с «Не показывать это снова» checkbox
я представляю себе что-то, что выглядит следующим образом:
Qt 5.2 добавлена возможность добавления QCheckBox
к QMessageBox
. Посмотрите на QMessageBox::setCheckbox
Вот несколько демо-кода
if (this->showMsgBox) {
QCheckBox *cb = new QCheckBox("Okay I understand");
QMessageBox msgbox;
msgbox.setText("Am I nerve-wrecking?");
msgbox.setIcon(QMessageBox::Icon::Question);
msgbox.addButton(QMessageBox::Ok);
msgbox.addButton(QMessageBox::Cancel);
msgbox.setDefaultButton(QMessageBox::Cancel);
msgbox.setCheckBox(cb);
QObject::connect(cb, &QCheckBox::stateChanged, [this](int state){
if (static_cast<Qt::CheckState>(state) == Qt::CheckState::Checked) {
this->showMsgBox = false;
}
});
msgbox.exec();
}
Это не будет работать, если 'msgbox.exec();' вызывается после 'connect'. 'exec()' является блокирующим вызовом, и сигнал 'stateChanged' не будет эффективным таким образом. Просто попробовал это с помощью небольшого демонстрационного приложения. – ramtheconqueror
Вы, конечно, правы. На самом деле он не использовал его код. Глупый я. Спасибо! –
Извините за глупый вопрос, что такое ShowMsgBox? – user5820174
[ 'QErrorMessage'] (http://doc.qt.io/qt-5/qerrormessage.html) имеет эта функция встроена. – thuga
Помогает ли мой ответ? Если так, не стесняйтесь принять это. –
Извините, мой плохо !. – user5820174