IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

QTableWidget : sélectionner la cellule précédente


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2017
    Messages : 37
    Par défaut QTableWidget : sélectionner la cellule précédente
    Bonjour,

    Je cherche à vérifier si dans une cellule de mon tableau j'ai un float.
    J'ai donc utilisé ce connect:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ui.tableWidget_segments, SIGNAL(currentItemChanged(QTableWidgetItem *, QTableWidgetItem *)), this, SLOT(checkTable2(QTableWidgetItem *, QTableWidgetItem *)));
    Je veux que quand c'est pas un entier la sélection revienne à la cellule précédente.
    J'ai tout essayé, la sélection reste toujours dans la 2ème cellule que j'ai sélectionné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    void testerTable::checkTable2(QTableWidgetItem *current, QTableWidgetItem *previous)
    {
    	if (!(previous == NULL))
    	{
    		if (previous->column() == 0 || previous->column() == 1)
    		{
    			QString textItem = previous->text();
    			float monFloatItem = textItem.toFloat();
    			if (!(monFloatItem > 0))
    			{
    				// Message d'erreur
    				QMessageBox msgBoxc(QMessageBox::Warning, "Nop", "No no no");
    				msgBoxc.exec();
     
    				//ui.tableWidget_segments->scrollToItem(item);
    				//ui.tableWidget_segments->setCurrentCell(item->row(), item->column());
     
     
     
    				//item->setFlags(Qt::ItemIsSelectable);
     
    				QModelIndex index = ui.tableWidget_segments->model()->index(previous->row(), previous->column());
    				////    ui.tableWidget_segments->edit(index);
     
    				// ui.tableWidget_segments->selectionModel()->select(index, QItemSelectionModel::Select);
     
    				//ui.tableWidget_segments->setCurrentIndex(index);
     
    				ui.tableWidget_segments->selectionModel()->select(index, QItemSelectionModel::ClearAndSelect);
     
    				//ui.tableWidget_segments->setCurrentCell(previous->row(), previous->column());
     
    				//ui.tableWidget_segments->setCurrentItem(previous);
     
    			//	ui.tableWidget_segments->selectionModel()->clearSelection();
     
    				//ui.tableWidget_segments->clearSelection();
     
    				//ui.tableWidget_segments->clearSelection();
     
     
     
    				//current->setSelected(false);
    				//previous->setSelected(true);
     
     
    				//ui.tableWidget_segments->setCurrentItem(previous);
     
     
    				//item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
    				//item->setSelected(true);
    				//ui.tableWidget_segments->setEditTriggers(QAbstractItemView::NoEditTriggers);
     
    				//	item->setText("");
     
    				//ui.tableWidget_segments->setCurrentIndex(index);
    				//ui.tableWidget_segments->setFocus();
    				//ui.tableWidget_segments->edit(index);
     
    				//Pour le focus
     
    				//item->setSelected(true);
     
    			}
    		}
    	}
    }

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Avant de commencer, une question peut-être idiote: qu'appelles tu la "cellule précédente"
    Est-ce la cellule qui se trouve directement à gauche (ou celle qui se trouve tout à fait à droite, la ligne au dessus, si tu es sur la colonne la plus à gauche d'une ligne) de celle qui contient l'erreur, ou la cellule que tu viens de quitter pour aller sur celle qui comporte l'erreur

    Car, les deux cas seront traités de manière différente:

    Dans le premier cas, tu peux envisager de "calculer" la position de la "cellule précédente", dans le deuxième, tu dois veiller à sauvegarder la position de la "cellule précédente" d'une manière ou d'une autre
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. sélectionner une cellule d'un TStringgrid
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 12/02/2010, 20h00
  2. Sélectionner plusieurs cellules d'un DBGrid
    Par chill667 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 23/11/2005, 11h43
  3. [TStringGrid] Comment sélectionner une cellule ?
    Par zidenne dans le forum Composants VCL
    Réponses: 1
    Dernier message: 18/11/2005, 10h45
  4. [JTable] Sélectionner une cellule
    Par GENERYS dans le forum Composants
    Réponses: 2
    Dernier message: 12/10/2005, 15h57
  5. TStringGrid: comment sélectionner les cellules à dessiner?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 9
    Dernier message: 25/09/2005, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo