2016-02-01 4 views
2

Как я могу показать окно сообщения с надписью «Не показывать снова»?QMessageBox с «Не показывать это снова» checkbox

я представляю себе что-то, что выглядит следующим образом:

enter image description here

+2

[ 'QErrorMessage'] (http://doc.qt.io/qt-5/qerrormessage.html) имеет эта функция встроена. – thuga

+0

Помогает ли мой ответ? Если так, не стесняйтесь принять это. –

+0

Извините, мой плохо !. – user5820174

ответ

6

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(); 
} 
+1

Это не будет работать, если 'msgbox.exec();' вызывается после 'connect'. 'exec()' является блокирующим вызовом, и сигнал 'stateChanged' не будет эффективным таким образом. Просто попробовал это с помощью небольшого демонстрационного приложения. – ramtheconqueror

+1

Вы, конечно, правы. На самом деле он не использовал его код. Глупый я. Спасибо! –

+0

Извините за глупый вопрос, что такое ShowMsgBox? – user5820174

 Смежные вопросы

  • Нет связанных вопросов^_^