我正在学习如何使用Qt进行C ++编程。当我点击一个按钮并且与该按钮相关的矩阵上的位置等于-1时,我想要显示此图像,我还要清除同一按钮上的文本,我的代码到现在为止部分是:
if(Tabuleiro[x][y] == -1){
this->Botoes[x][y]->setText("");
this->Botoes[x][y]->setIcon(QIcon("bomba.png"));
}
由于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("");
但它没有用,你知道为什么吗?
答案 0 :(得分:2)
请加入<QApplication>
和<QStyle>
并尝试:
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) );
您的按钮图标将无法显示!