Как изменить значок и заголовок QMessageBox

Я создаю приложение пользовательского интерфейса с помощью Qt c++.

У меня есть сообщение error, которое я создал с помощью класса QMessageBox, например:

QMessageBox errorMessage;
errorMessage.critical(0, "Error", "An error has occured !");
errorMessage.setFixedSize(500, 200);

Это как:

введите описание изображения здесь

И я хочу изменить элементы, обведенные красным кружком, которые являются значком и заголовком.

введите описание изображения здесь

Буду признателен за любую помощь.

Заранее спасибо.


person BUY    schedule 02.07.2018    source источник
comment
doc.qt.io/qt-5/qmessagebox.html#icon- prop, doc.qt.io/qt-5/ qmessagebox.html#iconPixmap-prop   -  person rafael gonzalez    schedule 02.07.2018
comment
Я уже проверил документацию, прежде чем задавать вопрос, я был бы рад, если бы вы могли предоставить мне фрагмент рабочего кода, потому что он не работает, когда я использую setIcon или setWindowIcon или setPixmap и т. д.   -  person BUY    schedule 02.07.2018


Ответы (3)


Однако вы можете использовать QMessageBox::critical(0, "Error", "An error has occured !");, потому что метод critical(...) является static и нет необходимости создавать экземпляр QMessageBox.

Используйте ниже code :

QMessageBox mb("Application Name",
                           "Hardware failure.\n\nDisk error detected\nDo you want to stop?",
                           QMessageBox::NoIcon,
                           QMessageBox::Yes | QMessageBox::Default,
                           QMessageBox::NoButton,
                           QMessageBox::NoButton);

QPixmap exportSuccess("/media/msi/Information/Pictures/Icons/Icons Pack/PNG/48X48/about.png");
mb.setIconPixmap(exportSuccess);
mb.exec();

введите описание изображения здесь

Этот пример работает на 100%

person BattleTested_закалённый в бою    schedule 02.07.2018
comment
Спасибо !, это сработало как шарм. Но ваша часть exportSuccess — это значок, который в вашем примере обведен синим кружком «i». - person BUY; 02.07.2018
comment
@BerkUtkuYenisey добро пожаловать, да, вы можете изменить его произвольно с помощью своего значка. - person BattleTested_закалённый в бою; 02.07.2018
comment
Нет, я уже сделал это :D. Но какую часть кода я должен изменить, чтобы изменить значок, который я обвел красной ручкой в ​​моем примере (это рядом с именем приложения)? - person BUY; 02.07.2018
comment
@BerkUtkuYenisey это очень просто, просто добавьте QPixmap, затем вызовите setIconPixmap из вашего экземпляра QMessageBox, наконец, вызовите из него метод exec. - person BattleTested_закалённый в бою; 02.07.2018

Просто вы можете установить значок для своего приложения, он будет автоматически установлен на вашем MessegeBox.

person Dnyaneshwar    schedule 02.07.2018

Если вы хотите установить значок для каждого окна, вы можете сделать это глобально:

QApplication::setWindowIcon(QIcon(":/GuiMain/gh_resource/GH Icon.ico"));

Вы также не обязаны использовать растровое изображение в моем опыте, вы можете использовать:

mb.setWindowIcon(QIcon(":/path/to/icon.ico"));

Это будет работать с отдельными окнами сообщений, просто добавьте свой собственный значок в файл .qrc.

person GuidedHacking    schedule 03.12.2020