QPushButton上未显示QIcon 我正在学习如何用C++来编写Qt。当我点击一个按钮,矩阵上与该按钮相关的位置等于-1时,我想显示这个图像,我还想清除该按钮上的文本,到目前为止,我对该部分的代码是: if(Tabuleiro[x][y] == -1){ this->Botoes[x][y]->setText(""); this->Botoes[x][y]->setIcon(QIcon("bomba.png")); }

QPushButton上未显示QIcon 我正在学习如何用C++来编写Qt。当我点击一个按钮,矩阵上与该按钮相关的位置等于-1时,我想显示这个图像,我还想清除该按钮上的文本,到目前为止,我对该部分的代码是: if(Tabuleiro[x][y] == -1){ this->Botoes[x][y]->setText(""); this->Botoes[x][y]->setIcon(QIcon("bomba.png")); },c++,qt,C++,Qt,由于Tabuleiro是int矩阵,Botoes是指向QPushButtons的指针矩阵,“bomba.png”是我想要显示的图像。该图像与项目位于同一文件夹中,但一旦我运行,它就不会显示。我还尝试使用Qt资源系统,我在它上面创建了一个名为imagens.qrc的新资源我创建了一个前缀/Imagem,并将我的图像放在那里,这是代码在这之后的样子: if(Tabuleiro[x][y] == -1){ this->Botoes[x][y]->setText("");

由于
Tabuleiro
是int矩阵,
Botoes
是指向QPushButtons的指针矩阵,“bomba.png”是我想要显示的图像。该图像与项目位于同一文件夹中,但一旦我运行,它就不会显示。我还尝试使用Qt资源系统,我在它上面创建了一个名为imagens.qrc的新资源我创建了一个前缀
/Imagem
,并将我的图像放在那里,这是代码在这之后的样子:

if(Tabuleiro[x][y] == -1){
        this->Botoes[x][y]->setText("");
        this->Botoes[x][y]->setIcon(QIcon(":/Imagem/bomba.png"));
    }
但还是不行。我做错了什么?此外,我还尝试使用

this->Botoes[x][y]->text().clear();
而不是

this->Botoes[x][y]->setText("");
但它不起作用,你知道为什么吗?

请包括
并尝试:

this->Botoes[x][y]->setIcon( qApp->style()->standardIcon( QStyle::SP_MessageBoxWarning ) );
如果有效(显示警告图标):那么,这意味着您没有正确加载资源

您还可以检查以下内容:

QPixmap foo( ":/Imagem/bomba.png" );
bool found = !foo.isNull(); // true if png file was found, false if it was not
如果为false,则表示您没有正确加载资源,如果为true,则按钮中应显示图标

此外,您还可以尝试
this->Botoes[x][y]->setIconSize(QSize(16,16))
,因为如果之前有人做了
this->Botoes[x][y]->setIconSize(QSize(0,0))您的按钮图标将不会显示

请包括
并尝试:

this->Botoes[x][y]->setIcon( qApp->style()->standardIcon( QStyle::SP_MessageBoxWarning ) );
如果有效(显示警告图标):那么,这意味着您没有正确加载资源

您还可以检查以下内容:

QPixmap foo( ":/Imagem/bomba.png" );
bool found = !foo.isNull(); // true if png file was found, false if it was not
如果为false,则表示您没有正确加载资源,如果为true,则按钮中应显示图标


此外,您还可以尝试
this->Botoes[x][y]->setIconSize(QSize(16,16))
,因为如果之前有人做了
this->Botoes[x][y]->setIconSize(QSize(0,0))您的按钮图标将不会显示

确保应用程序的工作目录(可执行文件所在)中的PNG。@Archie工作目录与可执行文件不同directory@joO-AARIAS考虑使用QT资源系统,谢谢Archie,但这并没有解决它。感谢@ KAMILKLIMEK,我只是尝试使用QT资源,但仍然没有工作:(确保PNG位于应用程序的工作目录(可执行文件所在的位置)。@Archie工作目录与可执行文件不同directory@joO-AARIAS考虑使用QT资源系统,谢谢Archie,但这并没有解决它。感谢@ KAMILKLIMEK,我只是尝试使用QT资源,但仍然没有工作:(那么b应该是真的,找到png了吗?这很奇怪,我以为它会是假的,因为foo上有一些东西,它不是空的。但是谢谢,我在加载资源时搞砸了,因为图标显示了我的错误,我编辑了这篇文章。
isNull
意味着没有找到png。那么b应该是真的,找到png了吗?我觉得很奇怪。)ght这将是错误的,因为foo上有一些内容,并且它不是空的。但是谢谢,我在加载资源时弄糟了,因为图标显示了我的错误,我编辑了这篇文章。
isNull
表示没有找到png。