Bonjour,
J'aimerais savoir s'il est possible de récupérer la longueur d'un QLabel ?
Merci d'avance.
Version imprimable
Bonjour,
J'aimerais savoir s'il est possible de récupérer la longueur d'un QLabel ?
Merci d'avance.
Essaie QPixmap et je vois cet propriété :
elle renvoie la hauteur de la pixmap.Code:int QPixmap:: hauteur () const
Sinon essaie de l'afficher dans un QGraphicsScene et après la doc ^^
J'ai mis un texte dans le QLabel et j'aimerais pouvoir récupérer sa longueur sans necessessairement passer par un layout !
Merci
la taille du label regarde
http://qt.developpez.com/doc/4.5/qwidget/#width-prop
pour la taille du texte, il faut utiliser
http://qt.developpez.com/doc/4.5/qfontmetricsf/
ou
http://qt.developpez.com/doc/4.5/qfontmetrics/
Merci pour la documentation. J'ai donc lu que width() permettait de récupérer la taille occupé sur X par QLabel, sa longueur quoi. Donc pour centrer mon QLablel je prends ma longueur sur X à laquelle je retranche la longueur du QLablel et je divise le tout par 2. Voilà normalement j'ai la longueur sur X qui centre mon QLabel, sauf qu'il n'est pas centré :cry:. Est ce que j'ai mal fait quelque chose?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include <QApplication> #include <QWidget> #include <QPushButton> #include <QLCDNumber> #include <QSlider> #include <QLabel> #include <QProgressBar> #include <windows.h> #include <QFile> #include <QObject> #include "fenetre.h" #define WIDTH 75 #define SPACE 20 MaFenetre::MaFenetre() : QWidget() { int ResX = GetSystemMetrics(SM_CXSCREEN)/3; int ResY = GetSystemMetrics(SM_CYSCREEN)/6; setFixedSize(ResX, ResY); bouton0 = new QPushButton("ARRETER", this); bouton1 = new QPushButton("QUITTER", this); bouton0->setGeometry ( (ResX-(2*WIDTH+SPACE))/2 , 0.8*ResY, WIDTH, SPACE ); bouton1->setGeometry ( (ResX-(2*WIDTH+SPACE))/2+WIDTH+SPACE, 0.8*ResY, WIDTH, SPACE ); QLabel *titre = new QLabel("<SMALL><strong>SAUVEGARDE DES DONNEÉS DE CONFIGURATION</strong></SMALL>", this); int titre_width=titre->width(); -> CENTRAGE ICI <- titre->move( (ResX-titre_width)/2,0.05*ResX ); -> CENTRAGE ICI <- QProgressBar *ProgressBar= new QProgressBar(this); ProgressBar->setGeometry ( 0.1*ResX, 50, 0.8*ResX, 0.1*ResY ); ProgressBar->setRange( 0, 0 ); ProgressBar->setValue( 70 ); QObject::connect(bouton0, SIGNAL(clicked()) , qApp, SLOT( aboutQt() ) ); QObject::connect(bouton1, SIGNAL(clicked()) , qApp, SLOT( quit() ) ); QFile::copy ("C:/a copier/makefile", "C:/copie/makefile"); }
tu positionne tous à la main? Vue ce que tu fait, pourquoi ne pas utiliser un layout?
sinon
t'y voie pas une erreur ;)Code:(ResX-titre_width)/2
c'est pas plutôt
Code:ResX - (titre_width / 2)
Lol ? auriez vous fumé de l'herbe
********** -> taille de la fenêtre
++++****** -> ++++ taille de l'objet dans la fenêtre
****** -> taille de la fenêtre - l'objet
*** -> (taille de la fenêtre - l'objet)/2
***++++*** -> L'objet est bien centré !?
Ce pourquoi je ne pige pas pourquoi mon QLabel n'est pas centré ? je pense que l'attribut width ne prend pas la bonne longueur ?
Je croyais que ResX était le centre pour ton label.
C'est possible que temps que le label n'est pas affiché, width n'est pas recalculé.
c'est bien cela
#include <QtGui>
Si tu commanteCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 int main(int argc, char **argv) { QApplication app(argc,argv); QWidget w; const int ResX = 600; const int ResY = 200; w.resize(ResX,ResY); QLabel * l = new QLabel("<SMALL><strong>SAUVEGARDE DES DONNEÉS DE CONFIGURATION</strong></SMALL>", &w); l->show(); l->move((ResX - l->width())/2,10); w.show(); return app.exec(); };
le label n'est plus centré.Code:l->show();
Pourquoi n'utilise tu pas un Layout?
autant pour moi... je me suis mal exprimé.
Apparemment, tu peut remplacer
parCode:
1
2 l->show(); l->move((ResX - l->width())/2,10);
Code:l->move((ResX - l->minimumSizeHint() .width())/2,10);
Bon bah ça c'est fait ! merci