50 votes

Caractéristiques cachées de Qt

Un peu est caché dans Qt avec une documentation splendide. Mais étant donné l'immensité de la fonctionnalité Qt, paradoxalement, de nombreuses fonctionnalités utiles ont été négligées par moi (et réimplémentées ou contournées).

Quelles fonctions Qt souhaiteriez-vous avoir remarquées plus tôt?

54voto

rpg Points 5305

Voici une liste que j'ai écrit récemment:

  • Q_GADGET offre quelques méta-objet fonctionnalités sans le besoin d'hériter de QObject. Combiné avec Q_ENUMS il permet de réflexion pour les énumérations.
  • Vous pouvez déclarer un signal unique ou un logement à l'aide de la Q_SIGNAL et Q_SLOT macros.
  • Q_FOREACH et Q_FOREVER
  • qChecksum offre un CRC de mise en œuvre
  • qCompress / qUncompress
  • Utilisation qDeleteAll pour supprimer chaque élément dans un conteneur
  • Utilisation qRound pour flotter en entier arrondissement
  • qFuzzyCompare: la sécurité de comparer les float et double des valeurs
  • qVersion: Obtenir l' exécution lib qt version
  • L'utilisation de l'expéditeur() pour obtenir l'émetteur de la plage actuelle. Fonctionne uniquement pour les connexions directes.
  • QSysInfo en-tête: taille de mot, endianness, version de l'OS
  • QtEndian en-tête

33voto

  • qPrintable( string ) est plus facile à retenir et plus rapide à taper que string..toLocal8Bit().constData().
  • QSignalMapper pour canaliser beaucoup de signaux dans un logement avec un index.
  • Qt sur les différents pointeurs intelligents, expecially QPointer
  • Un grand nombre de diverses qmake trucs et astuces, dont beaucoup provenaient de sans-papiers qmake et des pages similaires.

Je suis sûr que je vais penser à plus tard.

26voto

elcuco Points 3953
  1. À l'aide de QObject::find_children<>() exposer caché childs
  2. À l'aide de qobject_cast<QWidget*>() de bon d'héritage
  3. Abuser QMetaOject (je suppose que j'ai besoin d'un jour de l')
  4. QObject::deleteLater() -> delete(this) !!!
  5. QObject::EventFilter()
  6. Même si qmake est vraiment un jouet, il peut être utilisé pour la compilation avec d'autres cadres (j'ai fait une pure application OpenGL, et pour le système de construction, j'ai utilisé qmake-qt3. Une fois, j'ai même compilé une application GTK à l'aide de QMake.
  7. Qt a un YouTube channel, vous pouvez trouver des choses intéressantes là

17voto

Łukasz Lew Points 10907

Une fonctionnalité que j'ai trouvée trop tard est la gestion stdin-stout via QFile. Je pourrais déposer alors tout std :: *.

Autre était (pas facile à trouver dans la documentation):

 qDebug () << x;
 

Ce qui s'est avéré très pratique pour le débogage.

Récemment, j'ai trouvé la classe de sérialisation facile QDataStream .

13voto

CMircea Points 2037

Vous pouvez connecter des signaux de signaux afin d'émettre un signal automatiquement. Cela est utile pour fournir des signaux de classes sous-jacentes. QTabWidget utilise un QTabBar et expose les signaux de la QTabBar à l'aide d'un truc comme ceci:

connect(myObj, SIGNAL(internalSignal(int)), SIGNAL(externalSignal(int)));

Qui va faire la classe en cours émettent externalSignal(int) lorsque myObj émet internalSignal(int). Cette aide avec le signal de côté des choses au moins. Il n'y a pas d'équivalent moyen de faire cela avec machines à sous que je connais; le seul moyen simple est de faire votre externalSlot appel internalSlot.

Source

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X