QMessageBox предупреждает желтый значок восклицательного знака

Как можно отобразить QMessageBox::warning с треугольным восклицательным знаком, как показано ниже?

Треугольный восклицательный знак на желтом фоне

Я не могу найти ни одного варианта в QMessageBox::warning, я получаю только красный круглый символ.


person linello    schedule 26.06.2012    source источник


Ответы (2)


Треугольный значок должен использоваться по умолчанию для диалогового окна QMessageBox::warning, а красный круглый — для диалогового окна QMessageBox::critical.

В моем коде Python я использую либо

QMessageBox.warning(None,QString("..."),QString("...."))

или более сложный

msg = "..."
q = QMessageBox(QMessageBox.Warning, "...",  QString(msg))
q.setStandardButtons(QMessageBox.Ok);
i = QIcon()
i.addPixmap(QPixmap("..."), QIcon.Normal)
q.setWindowIcon(i)
q.exec_()

И то и другое работает хорошо.

В конце концов, вы можете показать код, который вы используете для отображения диалога?

person Gianluca    schedule 26.06.2012
comment
QMessageBox::warning(это, это предупреждение, где-то проблема); в Linux с Qt 4.7.3 я получаю красный круглый восклицательный знак, а в Windows — желтый треугольный. - person linello; 26.06.2012
comment
Могу лишь подтвердить, что под линуксом работает как с питоном, так и с с++, но у меня установлена ​​только версия 4.8.1. Извиняюсь... - person Gianluca; 26.06.2012

Вы можете использовать функцию QMessageBox.setIcon() для настройки того, какой символ вы видите при отображении диалогового окна.

Предопределенные типы свойств значков перечислены здесь: https://doc.qt.io/qt-5/qmessagebox.html#severity-levels-and-the-icon-and-pixmap-properties

Вот мой пример окна сообщения на С++ со значком желтого треугольника:

    QMessageBox msgWarning;
    msgWarning.setText("WARNING!\nRunning low on coffee.");
    msgWarning.setIcon(QMessageBox::Warning);
    msgWarning.setWindowTitle("Caution");
    msgWarning.exec();

А вот мой пример C++ окна сообщения со значком красного круга:

    QMessageBox msgError;
    msgError.setText("CRITICAL ERROR!\nThe McRib is no longer available!");
    msgError.setIcon(QMessageBox::Critical);
    msgError.setWindowTitle("Danger");
    msgError.exec();
person JimmyJimJames    schedule 09.05.2019