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  ·  Classes  ·  Annotées  ·  Hiérarchie  ·  Fonctions  ·  Structure  · 

QMimeSourceFactory Class Reference


An extensible supply of MIME-typed data. More...

#include <qmime.h>

List of all member functions.

Public Members

  • virtual ~QMimeSourceFactory () 
  • virtual const QMimeSource* data ( const QString & abs_name ) const
  • virtual QString makeAbsolute ( const QString & abs_or_rel_name, const QString & context ) const
  • const QMimeSource* data ( const QString & abs_or_rel_name, const QString & context ) const
  • virtual void setText ( const QString & abs_name, const QString & text ) 
  • virtual void setImage ( const QString & abs_name, const QImage & im ) 
  • virtual void setPixmap ( const QString & abs_name, const QPixmap & pm ) 
  • virtual void setData ( const QString & abs_name, QMimeSource * data ) 
  • virtual void setFilePath ( const QStringList & ) 
  • virtual QStringList filePath () const
  • void addFilePath ( const QString & ) 
  • virtual void setExtensionType ( const QString & ext, const char * mimetype ) 

Static Public Members


Detailed Description

An extensible supply of MIME-typed data.

A QMimeSourceFactory provides an abstract interface to a collection of information. Each piece of information is represented by a QMimeSource object, which can be examined and converted to concrete data types by functions like QImageDrag::canDecode() and QImageDrag::decode().

The base QMimeSourceFactory can be used in two ways: as an abstraction of a collection of files, or as specifically stored data. For it to access files, call setFilePath() before accessing data. For stored data, call setData() for each item (there are also convenience functions setText(), setImage(), and setPixmap() that simply call setData() with massaged parameters).

The rich text widgets QTextView and QTextBrowser use QMimeSourceFactory to resolve references such as images or links within rich text documents. They either access the default factory ( see defaultFactory() ) or their own ( see QTextView::setMimeSourceFactory() ). Other classes that are capable of displaying rich text like QLabel, QWhatsThis or QMessageBox always use the default factory.

As mentioned earlier, a factory can also be used as container to store data associated with a name. This technique is useful whenever rich text contains images that are stored in the program itself, not loaded from the hard disk. Your program may for example define some image data as

  static const char* myimage_xpm[]={
  "...",
  ...
  "..."};

To be able to use this image within some rich text, for example inside a QLabel, you have to create a QImage from the raw data and insert it into the factory with a unique name:

  QMimeSourceFactory::defaultFactory()->setImage( "myimage", QImage(myimage_data) );

Now you can create a rich text QLabel with

  QLabel* label = new QLabel(
      "Rich text with embedded image:<img source=\"myimage\">"
      "Isn't that <em>cute</em>?" );

Member Function Documentation

QMimeSourceFactory::QMimeSourceFactory ()

Constructs a QMimeSourceFactory which has no file path and no stored content.

QMimeSourceFactory::~QMimeSourceFactory () [virtual]

Destructs the QMimeSourceFactory, deleting all stored content.

void QMimeSourceFactory::addFilePath ( const QString & p )

Adds another search path.

See also setFilePath().

const QMimeSource* QMimeSourceFactory::data ( const QString & abs_name ) const [virtual]

Returns a reference to the data associated with abs_name. The return value only remains valid until a subsequent call to this function for the same object, and only if setData() is not called to modify the data, so you should immediately decode the result.

If there is no data associated with abs_name in the factory's store, the factory tries to access the local filesystem. If abs_name isn't an absolute filename, the factory will search for it on all defined paths ( see setFilePath() ).

The factory understands all image formats supported by QImageIO. Any other mime types are determined by the filename extension. The default settings are

  setExtensionType("html", "text/html;charset=iso8859-1");
  setExtensionType("htm", "text/html;charset=iso8859-1");
  setExtensionType("txt", "text/plain");
  setExtensionType("xml", "text/xml;charset=UTF-8");

The effect of these is that filenames ending in "html" or "htm" will be treated as text encoded in the iso8859-1 encoding, those ending in "txt" will be treated as text encoded in the local encoding; those ending in "xml" will be treated as text encoded in UTF8 encoding. The text subtype ("html", "plain", or "xml") does not affect the factory, but users of the factory may behave differently. We recommend creating "xml" files where practical as such files can be viewed regardless of the run-time encoding, and can encode any Unicode characters without resorting to encoding definitions inside the file.

Any file data that is not recognized will be retrieved as a QMimeSource providing the "application/octet-stream" MIME type, which is just uninterpreted binary data. You can add further extensions or change existing ones with subsequent calls to setExtensionType(). If the extension mechanism is not sufficient for you problem domain, you may inherit QMimeSourceFactory and reimplement this function to perform some more clever mime type detection. The same applies if you want to use the mime source factory for accessing URL referenced data over a network.

const QMimeSource* QMimeSourceFactory::data ( const QString & abs_or_rel_name, const QString & context ) const

A convenience function. See data(const QString& abs_name).

QMimeSourceFactory* QMimeSourceFactory::defaultFactory () [static]

Returns the application-wide default mime source factory. This factory is used by rich text rendering classes such as QSimpleRichText, QWhatsThis and also QMessageBox to resolve named references within rich text documents. It serves also as initial factory for the more complex render widgets QTextView and QTextBrowser.

See also setDefaultFactory().

QStringList QMimeSourceFactory::filePath () const [virtual]

Returns the currently set search paths.

QString QMimeSourceFactory::makeAbsolute ( const QString & abs_or_rel_name, const QString & context ) const [virtual]

Converts the absolute or relative data item name abs_or_rel_name to an absolute name, interpreted within the context of the data item named context (this must be an absolute name).

void QMimeSourceFactory::setData ( const QString & abs_name, QMimeSource * data ) [virtual]

Sets data to be the data item associated with the absolute name abs_name. Note that the ownership of data is transferred to the factory - do not delete or access the pointer after passing it to this function.

void QMimeSourceFactory::setDefaultFactory ( QMimeSourceFactory * factory ) [static]

Sets the default factory, destroying any previously set mime source provider. The ownership of the factory is transferred.

See also defaultFactory().

void QMimeSourceFactory::setExtensionType ( const QString & ext, const char * mimetype ) [virtual]

Sets the MIME-type to be associated with a filename extension. This determines the MIME-type for files found via a path set by setFilePath().

void QMimeSourceFactory::setFilePath ( const QStringList & path ) [virtual]

Sets a list of directories which will be searched when named data is requested.

See also filePath().

void QMimeSourceFactory::setImage ( const QString & abs_name, const QImage & image ) [virtual]

Sets image to be the data item associated with the absolute name abs_name.

Equivalent to setData(abs_name, new QImageDrag(image)).

void QMimeSourceFactory::setPixmap ( const QString & abs_name, const QPixmap & pixmap ) [virtual]

Sets pixmap to be the data item associated with the absolute name abs_name.

void QMimeSourceFactory::setText ( const QString & abs_name, const QString & text ) [virtual]

Sets text to be the data item associated with the absolute name abs_name.

Equivalent to setData(abs_name, new QTextDrag(text)).


Search the documentation, FAQ, qt-interest archive and more (uses www.trolltech.com):


This file is part of the Qt toolkit, copyright © 1995-2005 Trolltech, all rights reserved.

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 103
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes ? Manquent-ils de pouvoir de négociation ? 56
  3. «Le projet de loi des droits du développeur» : quelles conditions doivent remplir les entreprises pour que le développeur puisse réussir ? 90
  4. Les développeurs détestent-ils les antivirus ? Un programmeur manifeste sa haine envers ces solutions de sécurité 31
  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 » 231
  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 103
  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 Qt Developer Network au hasard

Logo

Comment fermer une application

Le Qt Developer Network est un réseau de développeurs Qt anglophone, où ils peuvent partager leur expérience sur le framework. 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 2.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