我有一個play button的png格式圖像,其中我已將其作爲embedded resource存儲在我的應用程序中。Qt:點擊時QIcon消失; QIcon ::模式不被尊重
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="icon">
<file>play.png</file>
</qresource>
</RCC>
我創建了一個QIcon
有兩個Normal
和Active
模式
QIcon play;
play.addFile(":icon/play.png", QSize(), QIcon::Normal);
play.addFile(":icon/play.png", QSize(), QIcon::Active);
據我瞭解,未點擊(Normal
模式)時,本應顯示的圖標,然後繼續設置相同的源圖像點擊時這樣做(Active
模式)
QIcon::Normal
:當使用時顯示像素圖r不與圖標交互,但圖標表示的功能可用。
QIcon::Active
:當該圖標表示的功能可用並且用戶正在與該圖標進行交互時(例如,將鼠標移動到其上或單擊它),顯示該像素圖。
但是,當我點擊它時,它消失了(而是顯示一個空白框)。
這裏是圖標未點擊
這裏的圖標點擊
最小工作示例:
我創建了一個小例子,複製行爲我看到
#include <QApplication>
#include <QMainWindow>
#include <QMenuBar>
void initIcons()
{
Q_INIT_RESOURCE(view);
}
int main(int argc, char** argv)
{
QApplication* app = new QApplication(argc, argv);
QMainWindow* window = new QMainWindow();
QMenuBar* menu = new QMenuBar();
window->setMenuBar(menu);
QIcon play;
play.addFile(":icon/play.png", QSize(), QIcon::Normal);
play.addFile(":icon/play.png", QSize(), QIcon::Active);
QAction* action = new QAction(play, "", nullptr);
menu->addAction(action);
window->show();
return app->exec();
}
更新:
我也試圖與行爲沒有變化Mode
和State
每個組合:
play.addFile(":icon/play.png", QSize(), QIcon::Normal, QIcon::On);
play.addFile(":icon/play.png", QSize(), QIcon::Normal, QIcon::Off);
play.addFile(":icon/play.png", QSize(), QIcon::Selected, QIcon::On);
play.addFile(":icon/play.png", QSize(), QIcon::Selected, QIcon::Off);
play.addFile(":icon/play.png", QSize(), QIcon::Active, QIcon::On);
play.addFile(":icon/play.png", QSize(), QIcon::Active, QIcon::Off);
我也試過addPixmap
QIcon play;
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Normal, QIcon::On);
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Normal, QIcon::Off);
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Selected, QIcon::On);
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Selected, QIcon::Off);
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Active, QIcon::On);
play.addPixmap(QPixmap(":icon/play.png"), QIcon::Active, QIcon::Off);
這些都不幸地改變了行爲。
什麼對我很好,所以這很奇怪。您是否也嘗試在主動模式下添加像素圖?使用mode = Active的QIcon :: addFile(const QString&fileName,const QSize&size = QSize(),Mode mode = Normal,State state = Off)。像這樣:icon.addFile(「:/ play.png」,QSize(),QIcon :: Active); –
@GabrieldeGrimouard感謝您的評論。我已更新問題以反映您的建議。不幸的是,這個 –
看起來像你需要用一個窗口和一個按鈕創建單獨的項目,所以其他人可以重現你的問題。 – fghj