
| | auteurs : Matthieu Brucher, Benjamin Poulain |
Par défaut, Qt utilise le style natif du système d'exploitation.
Si vous voulez modifier le style, vous pouvez le faire au niveau de chaque widget
à l'aide de QWidget::setStyle() ou au niveau de l'application complète avec
QApplication::setStyle().
Voici par exemple comment utiliser le style "Plastique" pour toute l'application:
QApplication::setStyle(new QPlastiqueStyle);
|
Créer un style complet est généralement une tâche difficile. Heureusement Qt fournit un
mécanisme simple pour personnaliser les styles: les CSS (Cascading Style Sheets).
Avec CSS pour Qt, il est possible de personnaliser le design d'une application à l'aide
d'une syntaxe simple dérivée des CSS de HTML. Cela peut se faire au niveau de designer,
ou comme pour les styles classiques, au niveau des widgets ou de l'application.
| Voici une exemple d'une feuille CSS de Qt: |
QWidget {
border: 1px solid gray;
border-radius: 10px;
padding: 1px 10px 1px 10px;
margin: 3px;
}
QLineEdit:enabled {
background: green;
}
QLineEdit:!enabled {
background: grey;
}
QComboBox::drop-down {
subcontrol-origin: padding;
subcontrol-position: top right;
width: 50px;
border-radius: 0;
}
|
|
lien : Un exemple de création et d'utilisation de style sur le site de Trollech
lien : Comment connaître les styles disponibles ?
lien : QApplication::setStyle ( const QString & style )
lien : QStyleFactory
|
| | auteur : Benjamin Poulain |
Les styles disponibles dépendent de la plateforme et des plugins.
La classe QStyleFactory permet de lever toute ambiguïté en fournissant la liste des styles disponibles à l'exécutions.
La méthode statique QStyleFactory::keys retourne une liste de nom de style qu'il est possible de charger.
À partir des noms de cette liste, il est possible de charge les styles avec la méthode statique QStyleFactory::create.
Notez qu'en général il est déconseillé de changer de style car l'application perd son intégration avec le reste du système.
|
| | auteur : Yan Verdavaine |
La façon la plus simple est d'utiliser un QLabel et ses possibilités de Rich text
(http://doc.trolltech.com/4.3/richtext.html). Pour cela il suffit :
- D'autoriser l'ouverture vers une page web
- De remplir le label avec un petit morceau en HTML :
<a href= 'site referencé'>XXXXX</a>
. où XXX peut être
- une phrase simple.
- une phrase en HTML :
<font size='S' family='...' color='C'> ... </font>
- size : facultatif. Taille de la police
- family : facultatif. Police à utiliser dans l'ordre de préférence
- color : couleur du texte
- Il est possible de compléter la phrase en utilisant les balises de formatage de texte comme gras(<b>...<\b>), italique (
<i>...</i>
)...
- une image en HTML :
<img src='MON_IMAGE' height ='H' width= 'W'>
- src : path de l'image à afficher. Peut se situer dans les ressources
- height : facultatif. Hauteur de l'image
- width : facultatif. Largeur de l'image
exemple avec un lien text et un lien image |
#include <QtGui>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QLabel label;
label. setText ( "La doc de"
"<a href='http://doc.trolltech.com/4.3/qlabel.html'>"
"<font size='15' family='Arial, Helvetica, sans-serif' color='green'><b> Qt </b></font>"
"</a>"
"est voici "
"<a href='http://qt.developpez.com/faq/'>"
"<img src='FAQ-Qt.gif'>"
"</a>");
label.setOpenExternalLinks ( true );
label.show();
return app.exec();
}
|
|
| | auteur : Shugo78 |
Qt propose la classe QSplashScreen pour simplifier la gestion des pages de démarrage.
Une page de démarrage est une image affichée lors du démarrage d'un programme,
pour masquer un démarrage lent ou tout simplement par marketing.
Remarque :
- Cette page se fermera si l'on clique dessus
- QSplashScreen est lancé avant la boucle d'événement de l'application,
il est donc préférable d'appeler QApplication::processEvents() de temps en temps pour
traiter les événements en cours.
|
#include <QtGui>
#include <windows.h>
int main (int argc, char** argv)
{
QApplication app (argc, argv);
QSplashScreen splash;
splash.setWindowFlags ( Qt::WindowStaysOnTopHint);
splash.setPixmap(QPixmap ("c:/figure1.jpg"));
splash.show();
splash.showMessage (QObject::tr ("Etape 1"), Qt::AlignRight | Qt::AlignTop, Qt::white);
Sleep(2000);
app .processEvents();
splash.setPixmap(QPixmap ("c:/figure2.jpg"));
splash.showMessage (QObject::tr ("Etape 2"), Qt::AlignRight | Qt::AlignTop, Qt::white);
Sleep(2000);
app .processEvents();
QWidget w;
w.show();
splash.finish (&w);
return app.exec ();
}
|
|
| | auteur : IrmatDen |
La méthode la plus simple est d'utiliser un QLabel conjointement à un QPixmap.
|
#include <QtGui>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QLabel label;
label.setPixmap(QPixmap("c :/image.png"));
label.show();
QObject::connect(&label, SIGNAL(clicked()), &app, SLOT(quit()));
return app.exec();
}
|
|
| | auteur : Yan Verdavaine |
Si une action longue est exécuté (ex :parcours récursif de répertoire, copie de
plusieurs fichiers,...) par l'ihm, celle ci va se geler et ne plus répondre...
Pour remédier à cela il est souvent préférable d'utiliser une thread.
Mais il existe une alternative intéressante lorsque ce traitement n'a vraiment aucun intérêt à être mis dans un thread :
QCoreApplication (et donc QApplication ) possède la méthode static processevents permettant l'exécution dune partie ou de tous les events de l'eventloop.
| Simulation d'un traitement long. L'un utilise le processevents l'autre non |  #include <QtGui>
#include <cmath>
#include <ctime>
double action_simulation(int nb =1000)
{
double somme(0.);
for (unsigned int j=0;j<nb;++j) somme+=sqrt(static_cast<double>(j));
return somme;
}
class MyQPushButton : public QPushButton
{
public :
MyQPushButton(const QString & text, QWidget * parent = 0)
:QPushButton (text,parent)
{
resize(75, 30);
setFont(QFont("Times", 12, QFont::Bold));
};
protected:
void mouseReleaseEvent ( QMouseEvent * event )
{
QProgressDialog mybar( "Wait ...", 0, 0, 0);
mybar.setWindowModality(Qt::ApplicationModal);
mybar.show();
double somme(0.);
clock_t endwait;
endwait = clock () + 5* CLOCKS_PER_SEC ;
while (clock() < endwait)
{
somme+= action_simulation() ;
}
qDebug()<<somme;
}
};
class MyQPushButton2 : public QPushButton
{
public :
MyQPushButton2(const QString & text, QWidget * parent = 0)
:QPushButton (text,parent)
{
resize(75, 30);
setFont(QFont("Times", 12, QFont::Bold));
};
protected :
void mouseReleaseEvent ( QMouseEvent * event )
{
QProgressDialog mybar( "Wait ...", 0, 0, 0);
mybar.setWindowModality(Qt::ApplicationModal);
mybar.show();
double somme(0.);
clock_t endwait;
endwait = clock () + 5 * CLOCKS_PER_SEC ;
while (clock() < endwait)
{
QCoreApplication::processEvents();
somme+= action_simulation() ;
}
qDebug()<<somme;
}
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QWidget w;
QVBoxLayout * vl = new QVBoxLayout;
{
MyQPushButton * bouton1 = new MyQPushButton("Sans QCoreApplication::processEvents()");
MyQPushButton2 * bouton2 = new MyQPushButton2("Avec QCoreApplication::processEvents()");
vl->addWidget(bouton1);
vl->addWidget(bouton2);
}
w.setLayout(vl);
w.show();
return app.exec();
}
|
|
| | auteur : Yan Verdavaine |
Comme un Gif animé est quelque chose de non statique, on ne peut pas afficher l'animation avec une QImage ou une QPixmap. Pour cela, Qt fournie une classe dédiée aux vidéos : QMovie.
La méthode la plus simple est de créer un QMovie avec le gif et de l'associer à un label.
|
#include <QtGui>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QLabel w;
QMovie movie("c:/Mickey-11.gif");
w.setMovie (&movie);
movie.start ();
w.show();
return app.exec();
}
|
Il faut tout de même préciser que la compilation du plugin Gif est nécessaire pour
que ce code marche correctement.
|
| | auteur : Yan Verdavaine |
Il peut être intéressant d'avoir des icônes qui évoluent dans le temps.
Par exemple, une icône dans la barre des tâches qui donne l'avancement d'un traitement.
Pour animer une QIcon, il suffit de remplacer l'image à utiliser à l'instant t.
Voici trois méthodes simples:
1- Un fichier image animé (gif, mng,...) et QMovie :
- QMovie émet un signal à chaque changement d'image.
- Il suffit de connecter un slot qui va récupérer l'image courante de QMovie
- Icône peut être animée par la lecture de l'animation.
- Possibilité de contrôler l'avancement de l'animation avec la méthode jumpToFrame
| Le bouton permet de charger une image animée. | #include <QtGui>
class MyWindow : public QWidget
{
Q_OBJECT
QMovie m_movie;
QPushButton *m_but;
QSystemTrayIcon m_sysTray;
public :
MyWindow( )
{
QLayout * l = new QVBoxLayout;
{
m_but = new QPushButton;
l->addWidget(m_but);
}
setLayout(l);
connect(&m_movie, SIGNAL(updated ( const QRect & )),this,SLOT(nouvelleIcone()));
connect(m_but, SIGNAL(clicked( )),this,SLOT(nouvelleImageAnimee()));
QTimer::singleShot(0,this,SLOT(chargerImageAnimee()));
}
private slots:
void chargerImageAnimee()
{
QString s =QFileDialog::getOpenFileName(this,"choisir une image animee",QString(),"*.gif *.mng");
if (!s.isEmpty())
{
m_movie.stop();
m_movie.setFileName(s);
m_movie.start();
}
}
void nouvelleIcone()
{
QIcon icon(m_movie.currentPixmap());
m_but->setIcon(icon);
m_sysTray.setIcon(icon);
m_sysTray.show();
setWindowIcon(icon);
}
};
#include "main.moc"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MyWindow w;
w.show();
return app.exec();
}
|
2- Une liste d'image :
- A chaque évènement de changement d'image, on choisi l'image dans la liste
- Un timer permet de faire évoluer l'animation de manière constante
| Charge les images d'un répertoire dans une liste. |  #include <QtGui>
class MyWindow : public QWidget
{
Q_OBJECT
QList<QPixmap> m_lImages;
QPushButton *m_but;
QSystemTrayIcon m_sysTray;
public :
MyWindow( )
{
QLayout * l = new QVBoxLayout;
{
QSlider * slider = new QSlider(Qt::Horizontal);
slider->setRange ( 0,100 );
connect (slider,SIGNAL(valueChanged ( int )),this,SLOT (nouvelleIcone(int)));
l->addWidget(slider);
m_but = new QPushButton;
l->addWidget(m_but);
}
setLayout(l);
connect(m_but, SIGNAL(clicked( )),this,SLOT(chargerRepertoire()));
QTimer::singleShot(0,this,SLOT(chargerImageAnimee()));
}
private slots:
void chargerRepertoire()
{
QString s =QFileDialog::getExistingDirectory(this,"choisir une image animee",QString());
m_lImages.clear();
QDir d(s);
QStringList filters;
filters << "*.jpg" << "*.png" << "*.gif";
foreach(QString file,d.entryList (filters,QDir::Files))
{
QPixmap tmp(d.absolutePath()+"/"+file);
if ( !tmp.isNull ())
m_lImages<<tmp;
}
}
void nouvelleIcone(int pourcent)
{
if (m_lImages.size() == 0)
return;
QIcon icon(m_lImages[pourcent%m_lImages.size()]);
m_but->setIcon(icon);
m_sysTray.setIcon(icon);
m_sysTray.show();
setWindowIcon(icon);
}
};
#include "main.moc"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
MyWindow w;
w.show();
return app.exec();
}
|
3- Un QPainter :
- A chaque évènement qui demande un changement de l'icône , on créé une nouvelle image avec un QPainter
- La plus compliqué à mettre en place mais la plus puissante.
- La création d'une nouvelle icône peut mettre du temps
| Compose une image à partir de deux images |  #include <QtGui>
class myWindows : public QWidget
{
Q_OBJECT
public :
myWindows()
{
QGridLayout * l = new QGridLayout;
{
QSlider * slider = new QSlider(Qt::Horizontal);
slider->setRange ( 0,100 );
connect (slider,SIGNAL(valueChanged ( int )),this,SLOT (noucelleIcone(int)));
l->addWidget(slider,0,0,1,3);
QPushButton * b = new QPushButton("charger Pix1");
connect(b,SIGNAL(clicked()),this,SLOT(OpenPix1()));
m_Apix1 =new QLabel;
l->addWidget(b,1,0);
l->addWidget(m_Apix1,2,0);
m_AresultIcone = new QPushButton;
m_Aresult =new QLabel;
l->addWidget(m_AresultIcone,1,1);
l->addWidget(m_Aresult,2,1);
QPushButton * b = new QPushButton("charger Pix2");
connect(b,SIGNAL(clicked()),this,SLOT(OpenPix2()));
m_Apix2 =new QLabel;
l->addWidget(b,1,2);
l->addWidget(m_Apix2,2,2);
}
setLayout(l);
m_trayIcon.show();
}
private slots :
void noucelleIcone(int percent)
{
QPixmap resultImage(200,200);
resultImage.fill(Qt::transparent);
{
QPainter painter(&resultImage);
float percent_1 = (100.- percent)/100.;
float percent_2 = percent/100.;
QRect target(0, 0, resultImage.width(), percent_1*resultImage.height());
QRect source(0, 0, m_pix1.width(), percent_1*m_pix1.height());
painter.drawPixmap(target, m_pix1, source);
QRect target2(0, percent_1*resultImage.height(), resultImage.width(), percent_2*resultImage.height());
QRect source2(0, percent_1*m_pix2.height(), m_pix2.width(), percent_2*m_pix2.height());
painter.drawPixmap(target2, m_pix2, source2);
painter.setPen(QPen(Qt::black));
painter.setFont(QFont("TAHOMA",80,20));
painter.drawText(10,resultImage.height()/2,QString::number(percent));
}
QIcon iconeCourante(resultImage);
m_Aresult->setPixmap(resultImage);
m_AresultIcone->setIcon(iconeCourante);
setWindowIcon (iconeCourante);
m_trayIcon.setIcon(iconeCourante);
}
void OpenPix1()
{
static QString s;
s =QFileDialog::getOpenFileName
(
this,
"image 1",
s,
"images (*.jpg *.png *.bmp *.gif)\n *.*"
);
if (! s.isEmpty())
{
QPixmap tmp(s);
m_pix1 = tmp.scaled(200,200,Qt::KeepAspectRatio);
m_Apix1->setPixmap(m_pix1);
}
}
void OpenPix2()
{
static QString s;
s =QFileDialog::getOpenFileName
(
this,
"image 2",
s,
"images (*.jpg *.png *.bmp *.gif)\n *.*"
);
if (! s.isEmpty())
{
QPixmap tmp(s);
m_pix2 = tmp.scaled(200,200,Qt::KeepAspectRatio);
m_Apix2->setPixmap(m_pix2);
}
}
private :
QPixmap m_pix1;
QPixmap m_pix2;
QLabel * m_Apix1;
QLabel * m_Apix2;
QSystemTrayIcon m_trayIcon;
QPushButton * m_AresultIcone;
QLabel * m_Aresult;
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
myWindows w;
w.show();
return app.exec();
}
|
|
| | auteur : Benjamin Poulain |
Il n'y a pas de liens de parenté entre ces deux là.
Au début il arrive de se tromper entre Item View et Graphics View simplement car il y a "View" dans les deux noms.
Graphics View permet de dessiner et gérer des objets 2D. Item View permet de gérer des éléments (les items), et de les représenter visuellement (en table, liste et arbre).
Rien n'empêche de combiner ces deux infrastructures, mais il vaut mieux ne pas les confondre pour lire la documentation ou pour communiquer.
|
| | auteur : François Jaffré |
Qt fournit un mécanisme de gestion de la validation et de vérification des entrées
utilisateurs dans une zone d'édition.
La classe de base est la classe QValidator dont dérive les classes QDoubleValidator,
QIntValidator, et QRegExpValidator.
L'utilisation de ces classes est très simple au moins pour ce qui est des deux premières.
Exemple d'utilisation:
On veut limiter l'entrée dans une zone d'édition de nombres entiers compris entre 0 et 100 et uniquement ce type de nombre.
QIntValidator* validator = new QIntValidator (0, 100, this);
QLineEdit *edit= new QLineEdit(this);
edit->setValidator(validator);
|
Le même principe est utilisable pour contrôler par exemple une valeur double avec QDoubleValidator. Si l'on souhaite un motif spécifique par exemple une adresse IP, un numéro de téléphone ou autre il faut utiliser la classe QRegExpValidator ou créer soit même un validator à partir d'une classe dérivant de QValidator.
|
lien : QValidator
|
| | auteur : François Jaffré |
Qt depuis sa version 4.2 permet grâce à la classe QSystemTrayIcon de créer facilement des programmes ayant une entrée dans la zone de notification. Cela se fait à l'aide des quelques méthodes suivantes :
- void setIcon (const QIcon & icon) -> Permet d'appliquer une image qui servira d'icon dans la zone de notification
- void setContextMenu (QMenu * menu) -> Permet l'ajout d'un menu quand on fait un click droit sur l'icone se trouvant dans la zone de notification.
- void showMessage (const QString & title, const QString & message, MessageIcon icon = Information, int millisecondsTimeoutHint = 10000) -> Permet l'affichage d'un popup dans la zone de notification.
| Exemple | 
#include <QApplication>
#include <QSystemTrayIcon>
#include <QMenu>
#include <QPushButton>
#include <QHBoxLayout>
class SysTray : public QWidget
{
Q_OBJECT
private :
QSystemTrayIcon* m_SystIcon;
QPushButton* m_Bouton_Message;
public :
SysTray()
{
this->m_Bouton_Message = new QPushButton("Affiche text",this);
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(m_Bouton_Message);
this->setLayout(layout);
m_SystIcon = new QSystemTrayIcon(this);
QMenu* sysTrayMenu = new QMenu(this);
QAction* hide = new QAction("Hide",this);
QAction* show = new QAction("Show",this);
QAction* quit = new QAction("Quit",this);
sysTrayMenu->addAction(hide);
sysTrayMenu->addAction(show);
sysTrayMenu->addAction(quit);
m_SystIcon->setContextMenu(sysTrayMenu);
QIcon unIcon("windows.png");
m_SystIcon->setIcon(unIcon);
m_SystIcon->show();
connect(quit, SIGNAL(triggered()), this, SLOT(close()));
connect(show, SIGNAL(triggered()), this, SLOT(show()));
connect(hide, SIGNAL(triggered()), this, SLOT(hide()));
connect(m_Bouton_Message, SIGNAL(clicked(bool)), this, SLOT(Affiche(bool)));
}
private slots:
void Affiche(bool valid)
{
m_SystIcon->showMessage
(
"Bavo !",
"Vous venez de créer une application dans la zone de notification !"
);
}
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
SysTray w;
w.show();
return a.exec();
}
|
Remarque : La méthode showMessage() (arrivée à partir de Qt 4.3) qui fait apparaitre une info bulle est dépendante des paramètres de l'OS.
|
lien : QSystemTrayIcon
lien : QSystemTrayIcon::showMessage
lien : Tutoriel sur QSystemTrayIcon
|
| | auteur : François Jaffré |
Qt permet comme tous les framworks gérant les GUI, la création de fenêtre modale (fenêtre bloquant l'accès aux autres fenêtres du programme) et amodale (fenêtre indépendante des autres fenêtres du programme).
La classe de base gérant les boites de dialogues est QDialog. Celle-ci gère le mode modale ou amodale de la fenêtre au partir des méthodes suivantes :
- bool isModal () const -> Permet de savoir si la boite de dialogue est modale ou pas.
- void setModal (bool modal) -> Permet de définir si la boite de dialogue est modale ou pas (Par défaut une boite de dialogue Qt est amodale).
- int exec() -> Force l'affichage de la boite de dialogue en mode modale (la valeur définie par setModal() est ignorée).
- void show() -> Force l'affichage de la boite de dialogue.
- void hide() -> Permet de cacher la boite de dialogue.
| Création de boites de dialogues modales et amodales | 
#include <QApplication>
#include <QHBoxLayout>
#include <QPushButton>
#include <QDialog>
#include <QLabel>
class AmodaleDial : public QDialog
{
Q_OBJECT
private :
QLabel * m_Label;
public :
AmodaleDial(QWidget *parent): QDialog(parent)
{
m_Label = new QLabel("Cette fenêtre n'est pas modal", this);
m_Label->resize(100,50);
QHBoxLayout* layout = new QHBoxLayout();
layout->addWidget(m_Label);
setLayout(layout);
}
};
class ModaleDial : public QDialog
{
Q_OBJECT
private :
QLabel* m_Label;
public :
ModaleDial(QWidget *parent): QDialog(parent)
{
m_Label = new QLabel ("Cette fenêtre est modale", this);
m_Label->resize(100,50);
QHBoxLayout* layout = new QHBoxLayout();
layout->addWidget(m_Label);
setLayout(layout);
}
};
class Window : public QDialog
{
Q_OBJECT
private :
QPushButton* m_Bouton_ModaleFrame;
QPushButton* m_Bouton_AmodaleFrame;
AmodaleDial* m_amodaleDial;
public :
Window()
{
m_Bouton_ModaleFrame = new QPushButton("Modale Frame", this);
m_Bouton_AmodaleFrame = new QPushButton("Amodale Frame", this);
QHBoxLayout* layout = new QHBoxLayout();
layout->addWidget(m_Bouton_ModaleFrame);
layout->addWidget(m_Bouton_AmodaleFrame);
setLayout(layout);
m_amodaleDial = new AmodaleDial(this);
connect(this->m_Bouton_ModaleFrame, SIGNAL(clicked(bool)), this, SLOT(clickModale(bool)));
connect(this->m_Bouton_AmodaleFrame, SIGNAL(clicked(bool)), this, SLOT(clickAmodale(bool)));
}
private slots:
void clickModale(bool valid)
{
ModaleDial modaleDial(this);
modaleDial.exec();
}
void clickAmodale(bool valid)
{
m_amodaleDial->show();
}
};
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window w;
w.show();
return a.exec();
}
|
Remarque : Tout les QWidgets et par conséquent leurs classes dérivé peuvent être modal en modifiant leur propriétés windowModality à l'aide de la méthode setWindowModality(). Cependant il est préférable de gérer ce type de boite de dialogue à partir d'une QDialog et nom d'un QWidget.
|
lien : QDialog
lien : QWidget::setWindowModality
|
| | auteur : Louis du Verdier |
Les curseurs sont très utilisés dans les classes pouvant les accueillir (comme l'autorisent par défaut QTextEdit, QTextBrowser et d'autres classes encore).
Pour retrouver la sélection courante qu'à faite l'utilisateur d'un programme, il suffit d'utiliser la fonction selectedText() de la manière qui suit :
widget->textCursor().selectedText();
|
Notes : Cette fonction, retournant un QString, peut parfaitement être vide (ou empty en anglais).
Il est de même possible de supprimer la sélection courant à l'aide de removeSelectedText() :
widget->textCursor().removeSelectedText();
|
Note : La suppression du texte sélectionné ne se produira que s'il y a lieu d'une sélection.
L'insertion de texte avec l'assistance des curseurs s'effectue avec insertText() qui entre du texte à partir de la position du curseur.
widget->textCursor().insertText("Chaine de type QString");
|
Voici un exemple, reprenant ce qui est inscrit ci-dessus, permettant d'effectuer une modification sur un texte sélectionné sans pour autant modifier plusieurs chaines identiques :
zoneTexte = new QTextEdit(this);
connect(zoneTexte, SIGNAL(selectionChanged()), this, SLOT(transformer()));
void XXXXXXXX::transformer()
{
QString selectionTexte(zoneTexte->textCursor().selectedText());
zoneTexte->textCursor().removeSelectedText();
zoneTexte->textCursor().insertText("<italique>" + selectionTexte + "</italique>");
}
|
|
lien : QTextCursor
|
| | auteur : François Jaffré |
Qt fournit dans son framework des icônes standards comme flèches, fichier, dossiers, lecteur DVD, corbeille, etc.
La récupération de ces icônes se fait à l'aide de la classe QStyle avec la méthode suivante :
QIcon QStyle::standardIcon (StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const
|
Qui permet de récupérer l'icône choisi à partir de l'énumération StandardPixmap.
Exemple d'utilisation en appliquant un icone flèche sur un bouton :
QPushButton button;
QStyle* style = QApplication::style();
QIcon iconFleche = style->standardIcon(QStyle::SP_ArrowUp);
button.setIcon(iconFleche);
|
|
lien : QStyle::StandardIcon
lien : Liste des icons standard
|
Consultez les autres F.A.Q's
Les sources présentés sur cette page sont libres de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2006
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.
|