Qt 图像不会显示在按钮中
Posted
技术标签:
【中文标题】Qt 图像不会显示在按钮中【英文标题】:Qt Image won't show up in button 【发布时间】:2018-10-24 19:02:57 【问题描述】:我正在创建一个 Qt 应用程序,并且我有一个我想用作按钮而不是文本的图像。不幸的是,显示的只是一个空按钮。
我尝试了两种不同的方法来让它显示两种方法的相同结果。
方法一的代码:
ui->setupUi(this);
QPixmap pix(":/svg/resources/menu.svg");
int w = ui->menuButton->width();
int h = ui->menuButton->height();
ui->menuButton->setMask(pix.scaled(w,h,Qt::KeepAspectRatio).mask());
我在这里找到了第二种方法的信息:Adding image to QPushButton on Qt
方法二的代码:
ui->setupUi(this);
QIcon icon(":/svg/resources/menu.svg");
ui->menuButton->setIcon(icon);
有人可以帮我弄清楚为什么我的图片没有显示并且按钮只是空的吗?
【问题讨论】:
您是否检查过资源是否正确加载——第一个示例为pix.isNull(),第二个示例为icon.isNull()。另请注意,在您提供的第一个示例中,您使用缩放像素图中的 alpha 掩码来设置QPushButton
的形状——而不是设置像素图本身。
我查过了,它是一个空像素图...
当我尝试使用图标而不是像素图时,它不会显示为 null。但我仍然得到相同的结果。
【参考方案1】:
在我的项目中使用.svg图片作为按钮图标没问题,可能是按钮大小丢失了,试试:
ui->menuButton->setIcon(QIcon(":/svg/resources/menu.svg"));
ui->menuButton->setToolTip("optional tooltip");
ui->menuButton->setFixedSize(QSize(28,28));
假设您将图标正确存储在资源文件中。如果没有,创建一个新的: 右键单击您的顶部项目文件夹(在项目树中)-> 添加新的.. -> 在左侧选择 Qt,在右侧窗口中选择 Qt 资源文件 -> 出现一个新窗口。
添加前缀 -> 添加文件(您的图标)
【讨论】:
顺便说一句,您的解决方案让我意识到我错误地创建了我的变量。我以前做过QIcon icon(":/svg/resources/menu.svg");
而不是QIcon icon = QIcon(":/svg/resources/menu.svg");
。将其更改为后一段代码后,一切正常,无需我指定大小。【参考方案2】:
您使用 .svg 图像格式。您确定您的应用程序加载 .svg 的图像格式插件吗?图像插件必须位于应用程序当前目录的“imageformats”目录中。你可以在Qt目录.../Desktop/Qt/<version>/<mingw or msvc>/plugins/imageformats
找到可用的插件
【讨论】:
我检查了这个目录。我在那里看到了 svg 的 dll。我继续尝试使用 jpeg 进行此操作,并得到了相同的结果。以上是关于Qt 图像不会显示在按钮中的主要内容,如果未能解决你的问题,请参考以下文章