QIcon没有显示在QPushButton

时间:2015-11-25 14:41:07

标签: c++ qt

我正在学习如何使用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("");

但它没有用,你知道为什么吗?

1 个答案:

答案 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) );您的按钮图标将无法显示!