gpt4 book ai didi

c++ - QIcon 未显示在 QPushButton 上

转载 作者:行者123 更新时间:2023-11-28 02:16:20 24 4
gpt4 key购买 nike

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

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

最佳答案

请包括<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) );您的按钮图标将不会显示!

关于c++ - QIcon 未显示在 QPushButton 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com