je regarde, merci.
Version imprimable
je regarde, merci.
OuiCitation:
1- chaque ligne est limité à 64 chiffre?
La lecture et l'écriture se fait de gauche à droite, c'est pour obtenir une calculatrice, donc je laisse vide l'espace a droite non rempli.Citation:
2- s'il y en as moins que doit tu faire? afficher un 0 à la place un espace?
Es ce que 10 QLine edit avec un QIntValidator ne serait pas plus adapté?
Je peux lier 10 QLineEdit ensemble?
Parce que après il faut que je récupère le nombre contenue par la zone de saisie.
En pièce jointe, un image de là où j'en suis.
Il y a le qtextedit avec les dimensions 64*10.
Tu pense qu'on pourrai obtenir un résultat équivalent avec 10 Qline?
10 lignes d'éditions
ok, voici un exemple compilable de ce que peut donner l'utiliser les lineEdit.
N'hésite pas si tu as des questions.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 #include <QtGui> class maClass : public QWidget { public : maClass(QWidget * parent = 0) :QWidget(parent) { QVBoxLayout * l = new QVBoxLayout; //aucun espace entre les element l->setSpacing(0); //pas de marge l->setMargin(0); setLayout(l); //valide tout les nombre jusqu'a 30 chiffre QRegExp validator("^\\d{0,30}$"); for (int i=0;i<10;++i) { QLineEdit * le = new QLineEdit; //enleve les bordures le->setFrame(false); //filtrage des event pour le up dow et enter le->installEventFilter(this); //ce qui est entree doit etre valid le->setValidator(new QRegExpValidator(validator,le)); l->addWidget(le); } setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed); } bool eventFilter ( QObject * watched, QEvent * event ) { QLineEdit *le = qobject_cast<QLineEdit *>(watched); //filtre les evenement dans les lineEdit pour changer de ligne aprés un UP, down ou enter if (le && event->type() == QEvent::KeyPress) { QKeyEvent * kevent = static_cast<QKeyEvent*>(event); if(kevent->key() == Qt::Key_Up) { int index =layout()->indexOf (le); QLayoutItem * it = layout()->itemAt(index-1); if (it) { it->widget()->setFocus (Qt::OtherFocusReason); return true; } } if ( kevent->key() == Qt::Key_Down || kevent->key() == Qt::Key_Enter || kevent->key() == Qt::Key_Return ) { int index =layout()->indexOf (le); QLayoutItem * it = layout()->itemAt(index+1); if (it) { it->widget()->setFocus (Qt::OtherFocusReason); return true; } } } return QWidget::eventFilter (watched,event ); } }; int main(int argc, char *argv[]) { QApplication a(argc, argv); maClass w; w.show(); return a.exec(); }
J'ai du mal à comprendre cette ligne.Citation:
QKeyEvent * kevent = static_cast<QKeyEvent*>(event);
Si j'ai bien compris QKeyEvent est censé créer un QKeyEvent à partir d'un QEvent, non?
ps: Je suis entrain d'esayer vos méthodes.
merci.
La réponse à la question d'au dessus m'intéresse toujours, mais j'ai réussi à résoudre mon problème grâce aux supposition de chacun, en tout cas merci beaucoup à tous!
Voici la solution ça pourrait en inspirer certains:
1/Je créer un filtre sur mon QtextEdit:
2/Je traite les modifications apportées a mon QtextEdit:Citation:
ZoneDeSaisie = new QTextEdit(this);
// ne pas oublier de préciser qu'on ne peut plus écrire dans la zone de texte
ZoneDeSaisie->setReadOnly(true);
ZoneDeSaisie->installEventFilter(this);
Citation:
bool MaFenetre::eventFilter(QObject* watched, QEvent* event)
{
//Il faut que l'évènement soit une touche presser dans le QTextEdit
if (ZoneDeSaisie && event->type() == QEvent::KeyPress)
{
//création d'un QKeyEvent pour pouvoir identifier la touche.
QKeyEvent * kevent = static_cast<QKeyEvent*>(event);
switch (kevent->key())
{
case Qt::Key_0:
// fonction simple insérant un 0 avec la fonction "insert"
zero();
break;
case Qt::Key_1:
// idem que la fonction au dessus mais pour 1
un();
break;
case Qt::Key_2:
deux();
break;
case Qt::Key_3:
trois();
break;
case Qt::Key_4:
quatre();
break;
case Qt::Key_5:
cinq();
break;
case Qt::Key_6:
six();
break;
case Qt::Key_7:
sept();
break;
case Qt::Key_8:
huit();
break;
case Qt::Key_9:
neuf();
break;
//Pas de retour défaut
default:
break;
}
}
return QWidget::eventFilter (watched,event );
}
voilà encore merci à tous et n'hésité pas à me corriger si besoin ait !
Salut, content que ça marche :king:
Est-ce que tu peux éditer tes posts et remplacer tes blocs de citation par des blocs de code ?
Par exemple, dans ton gros post, tu mets
1/Je créer un filtre sur mon QtextEdit:
C'est nettement plus clair en utilisant les balises de code (à côté de la balise de citation) :Citation:
ZoneDeSaisie = new QTextEdit(this);
// ne pas oublier de préciser qu'on ne peut plus écrire dans la zone de texte
ZoneDeSaisie->setReadOnly(true);
ZoneDeSaisie->installEventFilter(this);
1/Je créer un filtre sur mon QtextEdit:
Code:
1
2
3
4 ZoneDeSaisie = new QTextEdit(this); // ne pas oublier de préciser qu'on ne peut plus écrire dans la zone de texte ZoneDeSaisie->setReadOnly(true); ZoneDeSaisie->installEventFilter(this);
Oui je peux ;)
Code:
1
2
3
4 ZoneDeSaisie = new QTextEdit(this); // ne pas oublier de préciser qu'on ne peut plus écrire dans la zone de texte ZoneDeSaisie->setReadOnly(true); ZoneDeSaisie->installEventFilter(this);
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
44
45
46
47
48
49
50
51
52
53 bool MaFenetre::eventFilter(QObject* watched, QEvent* event) { //Il faut que l'évènement soit une touche presser dans le QTextEdit if (ZoneDeSaisie && event->type() == QEvent::KeyPress) { //création d'un QKeyEvent pour pouvoir identifier la touche. QKeyEvent * kevent = static_cast<QKeyEvent*>(event); switch (kevent->key()) { case Qt::Key_0: // fonction simple insérant un 0 avec la fonction "insert" zero(); break; case Qt::Key_1: // idem que la fonction au dessus mais pour 1 un(); break; case Qt::Key_2: deux(); break; case Qt::Key_3: trois(); break; case Qt::Key_4: quatre(); break; case Qt::Key_5: cinq(); break; case Qt::Key_6: six(); break; case Qt::Key_7: sept(); break; case Qt::Key_8: huit(); break; case Qt::Key_9: neuf(); break; //Pas de retour défaut default: break; } } return QWidget::eventFilter (watched,event ); }