【问题标题】:Show standard warning icon in Qt4在 Qt4 中显示标准警告图标
【发布时间】:2010-12-15 19:23:26
【问题描述】:

如果 QLineEdit 包含无效数据,我会尝试在其旁边显示“警告”图标。
我试图使用QStyle::standardIcon(QStyle::SP_MessageBoxWarning) 获取标准像素图并将其放置在QLabel 中,在某些情况下这似乎可行。运行 Gnome 时,图标显示正确,但在 KDE 下运行时,不显示图标。我假设警告图标根本不包含在 KDE 下使用的样式中。

在 Qt 中显示“标准”警告图标的首选方式是什么?是否存在一些列表来显示每种样式中包含哪些图标?如何从我知道包含警告图标的样式中获取图标?

【问题讨论】:

    标签: qt coding-style icons


    【解决方案1】:

    上次遇到类似问题时,我发现this Qt labs discussion 很有用。它告诉我QIcon 现在(我相信从 4.6 开始)有一个QIcon::fromTheme 功能,允许您加载基于the Freedesktop.org Icon Naming Specification 的图标,此外还提供一个备用图标,如果当前主题没有有问题的图标。

    然后我所做的就是包含一些非常基本的图标作为备用,并且通常仅通过它们的 Freedesktop 名称指定图标。这几乎总是给人以主题一致的外观,并且该程序在人们丢失图标的情况下仍然有效。

    至于警告图标,我猜测/希望每个主题都必须有一个名为“dialog-warning”的主题,而这正是您要寻找的。​​p>

    我希望这会有所帮助。

    编辑:哦,如果你不知道,查看Tango icon set 以大致了解 Freedesktop 名称对应的内容可能很有用(尽管它当然取决于主题)。

    【讨论】:

      【解决方案2】:

      Qt 提供bundle a number of images 资源,您可以在自己的代码中使用这些资源。这些图像是通过standardIcon() 获得的图像的超集。您可能需要验证特定图像是否包含在您所针对的 Qt 版本中。

      最终结果可能如下所示:

      QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png");
      // use pixmap as needed
      

      【讨论】:

      • 有趣。我可以想象这对于为QIcon::fromTheme 提供后备服务非常有用。
      【解决方案3】:

      对于任何想知道如何在 Windows 环境中执行此操作的人,您可以:

      在您的自定义类中创建一个 qLabel,然后在该类的构造函数中创建一个具有您想要的样式的 QIcon,将其转换为像素图并使用 QLabel::setPixmap() 函数将其应用于您的创建:

      QIcon icon = style()->standardIcon(QStyle::SP_MessageBoxWarning); //or 
      //whatever icon you choose
      QPixmap pixmap = icon.pixmap(QSize(60, 60));
      ui->iconLabel->setPixmap(pixmap);
      
      ui->iconLabel->setScaledContents(true); //you can set this to fill the 
      //dimensions of your qLabel if you wish.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-29
        • 2011-05-18
        • 1970-01-01
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多