Qt QMessagebox中较低的文本

Qt QMessagebox中较低的文本,qt,settext,qmessagebox,Qt,Settext,Qmessagebox,我有一个带有自定义背景图像的QMessagebox。因为我想在背景图像的顶部看到一些东西,所以messagebox的文本应该放低。有人知道我怎么做吗?我已经尝试使用br插入一些白线,因此: popup.setText("<font size =5 color =white ><br>""<br>""<br>""Are you sure you want to erase the memory</font> "); popup.set

我有一个带有自定义背景图像的QMessagebox。因为我想在背景图像的顶部看到一些东西,所以messagebox的文本应该放低。有人知道我怎么做吗?我已经尝试使用br插入一些白线,因此:

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


”)您确定 想抹去记忆“);

但是这把背景图片搞砸了。有什么方法可以将包含文本的“框”移到较低的位置吗

您可以尝试获取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
      }
   }
}
void hack(QMessageBox*pMessageBox)
{
QGridLayout*grid=qobject_cast(pMessageBox->layout());
如果(网格)
{
QLabel*label=qobject_cast((网格->itemAtPosition(0,1))->widget());
如果(标签)
{
label->setMargin(label->margin()+5);//任何合适的
}
}
}

这段代码应该将文本位置降低3行。确实如此,但它弄乱了我的背景。事实上,问题是当我使用popup.setStyleSheet(“background image:url(hello.png))时,它不仅设置messagebox的背景,还设置按钮和文本框的背景。那么有没有办法只设置messagebox的背景而不设置其组件的背景呢?