Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Classes principales  ·  Annotées  ·  Classes groupées  ·  Fonctions  · 

Qt/Mac is Mac OS X Native

This document explains what makes an application "native" on Mac OS X. It shows the areas where Qt/Mac is compliant, and the grey areas where compliance is more questionable. (See also the document Qt/Mac Issues.)

Normally when referring to a native application, one really means an application that talks directly to the underlying window system and operating system, rather than one that uses some intermediary (for example the X11 server, or a web browser). Qt/Mac applications run as first class citizens, just like Cocoa, Java, and Carbon applications.

When an application is running as a first class citizen it means that it can interact with specific components of the Mac OS X experience:

  • The global menubar

    Qt/Mac does this via the QMenuBar abstraction. Mac users expect to have a menubar at the top of the screen and Qt/Mac honors this.

    Additionally, users expect certain conventions to be respected, for example the application menu should contain About, Preferences, Quit, etc. Qt/Mac handles this automatically, although it does not provide a means of interacting directly with the application menu. (By doing this automatically, Qt/Mac makes it easier to port Qt/Mac applications to other platforms.)

  • Aqua

    This is a critical piece of Mac OS X (documentation can be found at http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html). It is a huge topic, but the most important guidelines for GUI design are probably these:

    • Aqua look

      As with Cocoa/Carbon Qt/Mac provides widgets that look like those described in the Human Interface Descriptions. Qt/Mac's widgets use the Appearance Manager to implement the look, so Apple's own API's are doing the rendering (Qt/Mac <3.1 used an emulation style with pixmaps, however this quickly proved to be cumbersome, and unable to keep up with style changes at Apple).

    • Aqua feel

      This is a bit more subjective, but certainly Qt/Mac strives to provide the same feel as any Mac OS X application (and we consider situations where it doesn't achieve this to be bugs). Of course Qt has other concerns to bear in mind, especially remaining multiplatform. Some "baggage" that Qt carries is in an effort to provide a widget on a platform for which an equivelant doesn't exist, or so that a single API can be used to do something, even if the API doesn't make entire sense for a specific widget (for example pushbuttons with a popup menu are really bevel buttons in Mac OS X, but Qt/Mac cannot guess that this bevel button is right next to other real pushbuttons).

    • Aqua guides

      This is the most subjective, but there are many suggestions and guidelines in the Aqua style guidelines. This is the area where Qt/Mac is of least assistance. The decisions that must be made to conform (widget sizes, widget layouts with respect to other widgets, window margins, etc) must be made based on the user experience demanded by your application. If your user base is small or mostly comes from the Windows or Unix worlds, these are minor issues much less important than trying to make a mass market product. Qt/Mac is fully API compatible with Qt/Windows and Qt/X11, but Mac OS X is a significantly different platform to Windows and some special considerations must be made based on your audience.

  • Dock

    Interaction with the dock is limited, but at the very least the icon should be able to be interacted with. This can be achieved with QWidget::setIcon(). The setIcon() call can be made as often as necessary, so can be used to provide a constantly updating pixmap that works as expected.

  • Accessiblity

    Although many users never use this, some users will only interact with your applications via assistive devices. With Qt the aim is to make this automatic in your application so that it conforms to accepted practice on its platform (X11 accessiblity support is still in the works due to the developing nature of its accessibility design). With Qt 3.3 Qt/Mac will support accessiblity, and hopefully a host of assistive devices.

  • Build tools

    Mac OS X developers expect a certain level of interopability between their development toolkit and the platform's developer tools (for example MSVC, gmake, etc). Qt/Mac supports both Unix style Makefiles, and ProjectBuilder/Xcode project files by using the qmake tool. For example:

       qmake -spec macx-pbuilder project.pro
       

    will generate an Xcode project file from project.pro. With qmake you do not have to worry about rules for Qt's preprocessors (moc and uic) since qmake automatically handles them and ensures that everything necessary is linked into your application.

    Qt does not entirely interact with the development environment (for example plugins to set a file to 'mocable' from within the Xcode user interface). Trolltech is actively working on improving Qt's interoperability with various IDEs, so hopefully this will be supported soon.

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 102
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 53
  3. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 81
  4. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 28
  5. Qt Commercial : Digia organise un webinar gratuit le 27 mars sur la conception d'interfaces utilisateur et d'applications avec le framework 0
  6. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  7. 2017 : un quinquennat pour une nouvelle version du C++ ? Possible, selon Herb Sutter 11
Page suivante
  1. Linus Torvalds : le "C++ est un langage horrible", en justifiant le choix du C pour le système de gestion de version Git 100
  2. Comment prendre en compte l'utilisateur dans vos applications ? Pour un développeur, « 90 % des utilisateurs sont des idiots » 229
  3. Quel est LE livre que tout développeur doit lire absolument ? Celui qui vous a le plus marqué et inspiré 96
  4. Apple cède et s'engage à payer des droits à Nokia, le conflit des brevets entre les deux firmes s'achève 158
  5. Nokia porte à nouveau plainte contre Apple pour violation de sept nouveaux brevets 158
  6. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 102
  7. Quel est le code dont vous êtes le plus fier ? Pourquoi l'avez-vous écrit ? Et pourquoi vous a-t-il donné autant de satisfaction ? 83
Page suivante

Le blog Digia au hasard

Logo

Créer des applications avec un style Metro avec Qt, exemples en QML et C++, un article de Digia Qt traduit par Thibaut Cuvelier

Le blog Digia est l'endroit privilégié pour la communication sur l'édition commerciale de Qt, où des réponses publiques sont apportées aux questions les plus posées au support. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt 3.3
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web