在Qt4中显示标准警告图标
我试图在在Qt4中显示标准警告图标,qt,coding-style,icons,Qt,Coding Style,Icons,我试图在QLineEdit旁边显示一个“警告”图标,如果它包含无效数据我试图使用QStyle::standardIcon(QStyle::SP_MessageBoxWarning)获取一个标准的pixmap,并将其放置在QLabel中,在某些情况下,这似乎是可行的。运行Gnome时,图标会正确显示,但在KDE下运行时,不会显示任何图标。我假设在KDE下使用的样式中没有包含警告图标 在Qt中显示“标准”警告图标的首选方式是什么?是否存在显示每个样式中包含哪些图标的列表?如何从包含警告图标的样式中获
QLineEdit
旁边显示一个“警告”图标,如果它包含无效数据我试图使用
QStyle::standardIcon(QStyle::SP_MessageBoxWarning)
获取一个标准的pixmap,并将其放置在QLabel
中,在某些情况下,这似乎是可行的。运行Gnome时,图标会正确显示,但在KDE下运行时,不会显示任何图标。我假设在KDE下使用的样式中没有包含警告图标
在Qt中显示“标准”警告图标的首选方式是什么?是否存在显示每个样式中包含哪些图标的列表?如何从包含警告图标的样式中获取图标?上次我遇到类似问题时,我发现它很有用。它告诉我,现在(我相信从4.6开始)有一个
QIcon::fromTheme
函数,允许您根据加载图标,此外,如果当前主题没有相关图标,还可以提供备用图标
我所做的是包括一些非常基本的图标作为备用,并且通常只通过它们的Freedesktop名称来指定图标。这给了一个主题一致的外观几乎总是,该计划仍然在工作的情况下,人们失踪的图标
至于警告图标,我猜/希望每个主题都必须有一个名为“对话警告”的图标,而这正是您所寻找的
我希望这有帮助
编辑:哦,如果你不知道的话,可以看看这个例子,大致了解Freedesktop名称对应的是什么(尽管它当然取决于主题)。Qt做的是你可以在自己的代码中使用的资源。这些图像是通过standardIcon()
提供的图像的超集。您可能需要验证特定图像是否包含在目标的Qt版本中
最终结果可能如下所示:
QPixmap pixmap(":/trolltech/styles/commonstyle/images/up-128.png");
// use pixmap as needed
对于希望了解如何在Windows环境中执行此操作的任何人,您可以: 在自定义类中创建qLabel,然后在该类的构造函数中创建具有所需样式的QIcon,将其转换为pixmap,并使用qLabel::setPixmap()函数将其应用于所创建的QIcon:
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.
有趣。我可以想象,这对于为
QIcon::fromTheme
提供回退非常有用。