私はアプリケーションにembedded resourceとして保存したplay buttonのpng形式の画像を持っています。Qt:クリックするとQIconが消えます。 QIcon ::モードが尊重されていません
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="icon">
<file>play.png</file>
</qresource>
</RCC>
私は私が理解から、両方Normal
とActive
モード
QIcon play;
play.addFile(":icon/play.png", QSize(), QIcon::Normal);
play.addFile(":icon/play.png", QSize(), QIcon::Active);
に設定された同じソース画像とQIcon
を作成し、これは(Normal
モード)unclickedたときにアイコンを表示し、継続すべきです使用ピックスマップを表示します(Active
モード)
QIcon::Normal
をクリックしたときにそうrはアイコンと対話していませんが、アイコンが表す機能は使用できます。
QIcon::Active
:アイコンで表される機能が利用可能で、ユーザーがアイコン上でマウスを動かすなどの操作をしているときに、pixmapを表示します。
ただし、クリックすると消えます(代わりに空白のボックスが表示されます)。ここで
は、アイコンがここ をunclickedアイコンが をクリックです最小限の作業例:私は複製最小限の例を作成しました
私が見る動作
#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();
}
アップデート:私も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);
を試してみました 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);
:
私はまた、行動の変化なしでMode
とState
のすべての組み合わせを試してみました
これらのどれも、残念なことに動作を変更しません。
私にとってはうまくいくので、それは奇妙です。アクティブモードでもpixmapを追加しようとしましたか? mode = Activeのvoid QIcon :: addFile(const QString&fileName、const QSize&size = QSize()、Mode mode = Normal、State state = Off)そうです:icon.addFile( ":/ play.png"、QSize()、QIcon :: Active); –
@GabrieldeGrimouardがコメントしてくれてありがとう。私はあなたの提案を反映するために質問を更新しました。残念ながらまだこの成功はありません –
1つのウィンドウと1つのボタンで別々のプロジェクトを作成する必要があるように見えるので、他の人が問題を再現できます。 – fghj