qt:icons
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
qt:icons [2011/05/12 09:19] – mithat | qt:icons [2011/05/13 17:01] (current) – [Creating a Qt Resource for the theme] mithat | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Icons and Actions ====== | ====== Icons and Actions ====== | ||
- | This report discusses different ways of binding icons to actions in Qt desktop applications and provides motivation for exploring | + | This report discusses different ways of binding icons to actions in Qt desktop applications and provides motivation for developing |
In Qt, there are (at least) five different approaches to binding icons((http:// | In Qt, there are (at least) five different approaches to binding icons((http:// | ||
Line 7: | Line 7: | ||
===== Using Qt Resources in Qt Designer ===== | ===== Using Qt Resources in Qt Designer ===== | ||
- | The path-of-least-resistance for binding icons to actions when developing Qt applications with Qt Designer((Throughout, | + | The path-of-least-resistance for binding icons to actions when developing Qt applications with Qt Designer((Throughout, |
- | While this approach has the above stated benefits, it's not optimal for a couple reasons. First, it lacks the ability to specify multiple icon sizes. In a typical application, | + | While this approach has the above stated benefits, it's not optimal for a couple reasons. First, it lacks the ability to specify multiple icon sizes. In a typical application, |
- | Developers using this approach typically provide an icon in a resource that is as large as the application is likely to require, and then let Qt resize it as needed. Thus, for example, you might bind a 48x48 icon to an action and let Qt shrink it to 24x24 for the toolbar and 16x16 for the menu item. While this works, the shrunk icons often appear fuzzy or otherwise suboptimal((As near as I can tell, it's not possible to specify multi-sized icons in Qt Designer. You can supply Windows-style multi-size '' | + | Developers using this approach typically provide an icon in a resource that is as large as the application is likely to require, and then let Qt resize it as needed. Thus, for example, you might bind a 48x48 icon to an action and let Qt shrink it to 24x24 for the toolbar and 16x16 for the menu item. While this works, the shrunk icons often appear fuzzy and/or otherwise suboptimal((As near as I can tell, it's not possible to specify multi-sized icons in Qt Designer. You can supply Windows-style multi-size '' |
FIXME (an image here would help a lot) | FIXME (an image here would help a lot) | ||
Line 72: | Line 72: | ||
": | ": | ||
documentOpenIcon.addFile( | documentOpenIcon.addFile( | ||
- | ": | + | ": |
ui-> | ui-> | ||
Line 81: | Line 81: | ||
": | ": | ||
saveAsIcon.addFile( | saveAsIcon.addFile( | ||
- | ": | + | ": |
ui-> | ui-> | ||
Line 90: | Line 90: | ||
": | ": | ||
exitIcon.addFile( | exitIcon.addFile( | ||
- | ": | + | ": |
ui-> | ui-> | ||
Line 96: | Line 96: | ||
}</ | }</ | ||
- | If you have more than a handful of such icons, you will probably want to write a helper function | + | If you have more than a handful of such icons, you will probably want to write a [[MainWindow-buildIcon|support method]] |
==== Pros ==== | ==== Pros ==== | ||
Line 109: | Line 109: | ||
===== QStyle' | ===== QStyle' | ||
- | An alternative to using icon resources is provided by the '' | + | An alternative to using icon resources is provided by the '' |
- | The enumerated icons should be available on all platforms, so testing for their existence isn't required. | + | The main issue with using '' |
Implementation requires only a bit of straight-forward hand-coding. | Implementation requires only a bit of straight-forward hand-coding. | ||
Line 140: | Line 140: | ||
===== System theme using QIcon:: | ===== System theme using QIcon:: | ||
- | On X11 systems, Qt lets you access all the icons that are part of the system icon theme using the static function '' | + | On X11 systems, Qt lets you access all the icons that are part of the system icon theme using the static function '' |
- | As was the case with QStyle' | + | As was the case with QStyle' |
==== Code implementation ==== | ==== Code implementation ==== | ||
Line 199: | Line 199: | ||
==== Caveat ==== | ==== Caveat ==== | ||
- | QIcon' | + | QIcon' |
<code cpp-qt> | <code cpp-qt> | ||
QString iconTheme = My:: | QString iconTheme = My:: | ||
QIcon:: | QIcon:: | ||
+ | Until such '' | ||
===== Custom theme using QIcon:: | ===== Custom theme using QIcon:: | ||
- | The static function '' | + | The static function '' |
To describe the process, I will use an example of a custom theme that provides icons in a variety of sizes for our example application. The icons themselves are taken from the raucously popular, public domain Tango Project((http:// | To describe the process, I will use an example of a custom theme that provides icons in a variety of sizes for our example application. The icons themselves are taken from the raucously popular, public domain Tango Project((http:// | ||
Line 268: | Line 269: | ||
</ | </ | ||
- | Once you have created the '' | + | Once you have created the '' |
Note that in the set of icons I drew from, there were no 48x48 icons. To maintain best compatibility with Windows OSes, you ideally should include 48x48 icons as well((See http:// | Note that in the set of icons I drew from, there were no 48x48 icons. To maintain best compatibility with Windows OSes, you ideally should include 48x48 icons as well((See http:// | ||
- | The pros and cons associated with this approach are essentially identical to [[# | + | The pros and cons associated with this approach are essentially identical to [[# |
==== Code implementation ==== | ==== Code implementation ==== |
qt/icons.1305191976.txt.gz · Last modified: 2011/05/12 09:19 by mithat