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 :

Connaître le N° de la ligne modifiée dans QTableWidget


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut Connaître le N° de la ligne modifiée dans QTableWidget
    En fait je dispose d'un QTableWidget qui se compose de plusieurs cellWidget (pas de QTableWidgetItem), je désire savoir le numéro de la ligne lorsque je clique sur un cellWidget.
    En fait je veux uniquement enregistrer les modifications faites et non tout la QTableWidget.
    Etant donné que la méthode row a comme paramètre QTableWidgetItem.
    Comment dois je faire?
    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
    if ((changedSnortRules) && (uiIDSView.comboBox_rulesSNORT->currentText()
    			!= "local.rules")) {
    		QDir appDir = QDir(qApp->applicationDirPath());
    #if defined(Q_OS_WIN)
    		if (appDir.dirName().toLower() == "debug" || appDir.dirName().toLower() == "release")
    		appDir.cdUp();
    #elif defined(Q_OS_MAC)
    		if (appDir.dirName() == "MacOS") {
    			appDir.cdUp();
    			appDir.cdUp();
    			appDir.cdUp();
    		}
    #endif
    		QFile tempSnortRulesFile(appDir.path()
    				+ "/temp/snortrules/snortruleschanges.txt");
    		if (!tempSnortRulesFile.open(QIODevice::Append))
    			return;
    		QTextStream outchanges(&tempSnortRulesFile);
     
    		applied = false;
     
    		QString fileSnortRules;
    		fileSnortRules = uiIDSView.comboBox_rulesSNORT->currentText();
     
    		QList<QWidget *> widgets = console->ui.centralwidget->findChildren<
    				QWidget *> ("tableWidget_RulesIDS");
    		for (int k = 0; k < widgets.size(); k++) {
    			if (widgets.value(k)->isVisible() == true) {
    				QTableWidget * tableSnortRules = qobject_cast<QTableWidget*> (
    						widgets.value(k));
    				for (int i = 0; i < tableSnortRules->rowCount(); i++) {
    					QLineEdit * lineEditSID = qobject_cast<QLineEdit*> (
    							tableSnortRules->cellWidget(i, 0));
    					QString lineEditSIDstring = lineEditSID->text();
     
    					QComboBox * comboBoxStatus = qobject_cast<QComboBox*> (
    							tableSnortRules->cellWidget(i, 1));
    					QString comboBoxStatusstring =
    							comboBoxStatus->currentText();
     
    					QComboBox * comboBoxAction = qobject_cast<QComboBox*> (
    							tableSnortRules->cellWidget(i, 2));
    					QString comboBoxActionstring =
    							comboBoxAction->currentText();
     
    					outchanges << fileSnortRules << " " << lineEditSIDstring
    							<< " " << comboBoxStatusstring << " "
    							<< comboBoxActionstring << endl;
    				}
    			}
    		}
     
    		changedSnortRules = false;
    	}

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 117
    Par défaut
    Avec QSignalMapper le problème est résolu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QSignalMapper* signalMapper = new QSignalMapper(this);
        connect(signalMapper, SIGNAL(mapped(const QString &)),
                this, SLOT(GetRowsSnortRules(const QString &)));
    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
     
    if (!rule1.value(0).isEmpty()) {
                    QComboBox * comboBoxStatus = new QComboBox();
                    comboBoxStatus->setFrame(false);
                    comboBoxStatus->insertItems(0, QStringList() << tr("Activee")
                            << tr("Desactivee"));
     
                    connect(comboBoxStatus, SIGNAL(currentIndexChanged(QString)),
                            this, SLOT(ChangedLocalRules()));
     
                    if (!rule1.value(0).startsWith("#", 0)) {
                        comboBoxStatus->setCurrentIndex(0);
                        l = -1;
                    } else {
                        comboBoxStatus->setCurrentIndex(1);
                        l = 0;
                    }
                    tableWidget_RulesIDS->setCellWidget(i, 1, comboBoxStatus);
                    connect(comboBoxStatus, SIGNAL(currentIndexChanged(QString)),
                            signalMapper, SLOT(map()));
                    signalMapper->setMapping(comboBoxStatus, QString("%1").arg(i));
                }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void IDSView::GetRowsSnortRules(QString position) {
        changedLines.append(position.toInt());
        ChangedSnortRules();
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. connaître le nombre de ligne affectées dans un delete
    Par christgh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/10/2008, 15h43
  2. modifier un champs d'un ligne selectionner dans une fichier texte
    Par darkman13130 dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/06/2008, 12h00
  3. Réponses: 6
    Dernier message: 13/06/2008, 14h53
  4. Réponses: 8
    Dernier message: 11/12/2007, 17h04
  5. Réponses: 4
    Dernier message: 03/07/2007, 14h35

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