【问题标题】:Can an icon be centered over text in a QMessageBox?图标可以在 QMessageBox 中的文本上居中吗?
【发布时间】:2018-07-21 21:33:17
【问题描述】:

我是 Qt 的新手,并且通过在其中构建应用程序很开心。我制作了下面的 QMessageBox 作为对 About MyGreatApp 菜单项的响应,您可以看到它既有图标又有文字。

图标和文本可以相互定位吗?具体来说:图标可以居中在文本上吗?

void MainWindow::about()
{
    QMessageBox msgAbout;
    msgAbout.setInformativeText("<span style='text-align: center'><p><b><font size = 20>My Great Application</font><p><font size = 10>Version 100.1</font><p><font size = 10>by Me</font><p>Copyright © Me, 1848–2018. All rights reserved.</span><span style='text-align: left'><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span><p>");
    QPixmap pixAbout;
    pixAbout.load(":/Info.png");
    msgAbout.setIconPixmap(pixAbout);
    msgAbout.setStandardButtons(QMessageBox::Ok);
    msgAbout.setDefaultButton(QMessageBox::Ok);
    msgAbout.exec();
}

macOS 10.13.3
Qt Creator 4.5 基于 Qt 5.10.0(Clang 7.0 (Apple),64 位)

【问题讨论】:

    标签: c++ qt qt5 qmessagebox


    【解决方案1】:

    您可以在 html 中设置它,但您必须传递qresource 中的图像路径,为此您必须使用qrc:

    QMessageBox msgAbout;
    const QString message = "<p style='text-align: center;'><img src='qrc://Info.png' alt='' width='42' height='42'></p>"
                            "<p style='text-align: center;'><strong>My Great Application</strong></p>"
                            "<p style='text-align: center;'>Version 100.1</p>"
                            "<p style='text-align: center;'>by Me</p>"
                            "<p style='text-align: center;'>Copyright &copy; Me, 1848&ndash;2018. All rights reserved.</p>"
                            "<p style='text-align: center;'>&nbsp;</p>"
                            "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>";
    
    msgAbout.setInformativeText(message);
    msgAbout.setStandardButtons(QMessageBox::Ok);
    msgAbout.setDefaultButton(QMessageBox::Ok);
    msgAbout.exec();
    

    为了更好看,我们可以在右侧给它一个边距:

    QMessageBox msgAbout;
    const QString message = "<p style='text-align: center;'><img src='qrc:/Info.png' alt="" width='42' height='42' /></p>"
                            "<p style='text-align: center;'><strong>My Great Application</strong></p>"
                            "<p style='text-align: center;'>Version 100.1</p>"
                            "<p style='text-align: center;'>by Me</p>"
                            "<p style='text-align: center;'>Copyright &copy; Me, 1848&ndash;2018. All rights reserved.</p>"
                            "<p style='text-align: center;'>&nbsp;</p>"
                            "<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p>";
    
    msgAbout.setInformativeText(message);
    msgAbout.setStandardButtons(QMessageBox::Ok);
    msgAbout.setDefaultButton(QMessageBox::Ok);
    
    QGridLayout *lay = msgAbout.findChild<QGridLayout *>();
    QMargins margins = lay->contentsMargins();
    margins.setRight(40);
    lay->setContentsMargins(margins);
    msgAbout.exec();
    

    【讨论】:

      猜你喜欢
      • 2011-09-30
      • 1970-01-01
      • 2021-08-01
      • 2021-12-31
      • 2021-03-01
      • 2020-01-04
      • 1970-01-01
      • 2015-10-18
      • 2011-11-07
      相关资源
      最近更新 更多