14
votes

Honestly I do not understand resource files and how to get so that my things can get done, because it was partially explained to me and I'm quite confused where to put icon and how to make it visible on my programs.

setWindowIcon(QIcon(":/images/icon.png")); 

It doesn't show up or even show a error.

4
Are you using Qt Creator? If so, check if in your .pro file you have line like: RESOURCES += sth.qrc. Also check if in .qrc file you have prefix: "/images". If everything is in place try setting alias and use it like that: QIcon(":/alias").MKAROL

4 Answers

20
votes

Create a resources file named resources.qrc:

<!DOCTYPE RCC>
<RCC version="1.0">
  <qresource>
    <file>path/to/icon.png</file>
  </qresource>
</RCC>

Make sure that path/to/icon.png is an actual path, relative to the directory that contains resources.qrc.

In your .pro file, include the resource:

TARGET = your_app
TEMPLATE = app
QT += widgets 
RESOURCES += path/to/resources.qrc

Again, make sure that path/to/resources.qrc exists, relative to the directory that contains the project file.

After compiling, your resource will be embedded into your executable. It can be accessed like:

setWindowIcon(QIcon(":/path/to/icon.png"));

If the icon is not appearing, try this stackoverflow question or this one.

Another approach would be to use the Application Icon. This will set the application icon for your application on the desktop and start menus, and also on the top left corner of QMainWindows and QDialogs

6
votes

Wouldn't it be the simplest to use QtCreator's Designer window? In the lower right corner you can find 3 tabs - click on the most righthand one, then click on the pen:

qt designer resources

This will open Resources editor:

Qt creator Resources Editor

Define new resources file (below the left pane), than add a "namespace" (rigth pane) and add your files. You can set aliases for them, so that when you decide to replace your icon with somethin else - you only have to switch the path, as long as alias is kept the same. You can then reference your resources via their alias to set your icon where needed, eg: setWindowIcon(QIcon(":/HurBudClientGUI/plug"));

Also - take your time to read this: http://doc.qt.io/qt-5/resources.html and that: http://doc.qt.io/qt-5/designer-resources.html

Good luck!

5
votes

There is simper solution: just go to properties panel of the main window, then change the WindowIcon property to whatever icon you like.

0
votes

How to change the window icon in Qt6.

There is also that one:

Form.setWindowIcon(QtGui.QIcon('file path'))

It works!