Нижний текст в QMessagebox

У меня есть QMessagebox с пользовательским фоновым изображением. Поскольку в верхней части фонового изображения есть кое-что, что я хочу видеть, текст окна сообщения должен быть ниже. Кто-нибудь знает, как я могу это сделать? Я уже пытался вставить несколько белых строк с помощью br, поэтому:

popup.setText("<font size =5 color =white ><br>""<br>""<br>""Are you sure you 
want to erase the memory</font> ");

но это портит фоновую картинку. Есть ли способ переместить «поле», содержащее текст, в более низкое положение?


person Frank    schedule 26.06.2012    source источник
comment
хорошо, этот фрагмент кода должен уменьшить позицию текста на 3 строки.   -  person ScarCode    schedule 26.06.2012
comment
Да, но это портит мой фон. На самом деле проблема в том, что когда я использую popup.setStyleSheet(background-image: url(hello.png)) он устанавливает фон не только для окна сообщения, но также для кнопок и текстового поля. Так есть ли способ установить только фон окна сообщений, а не его компонентов?   -  person Frank    schedule 26.06.2012


Ответы (1)


Вы можете попытаться получить макет QMessageBox, получить метку, которая содержит ваш текст, и увеличить поле меток. Вероятно, это хак, который может сделать ваш проект непереносимым. Создайте свой QMessageBox, вызовите hack и затем запустите поле.

void hack(QMessageBox* pMessageBox)
{
   QGridLayout* grid = qobject_cast<QGridLayout*>(pMessageBox->layout());
   if (grid)
   {
      QLabel* label = qobject_cast<QLabel*>((grid->itemAtPosition(0,1))->widget());
      if (label)
      {
         label->setMargin(label->margin()+5); // whatever is suitable
      }
   }
}
person Jens    schedule 26.06.2012