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

Discussion :

Fenêtre de recherche et glisser-déposer pour un QTableWidget

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 586
    Par défaut Fenêtre de recherche et glisser-déposer pour un QTableWidget
    Bonjour à tous,je viens solliciter votre aide voici mes problèmes, je dois faire une qdialog dans mon tableur pour rechercher une expression la qdialog s'affiche
    mais quand j'appuis sur rechercher celle-ci se ferme il faudrait j'utilise un signal mais je sais pas trop comment procédé et si vous pouviez me conseiller pour la recherche aussi voici se que j'ai déjà fait.

    ma class dialog:

    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
    #include "dialog.h"
    #include "ui_dialog.h"
     
     
    Dialog::Dialog(QWidget *parent) :
        QDialog(parent),
         ui(new Ui::Dialog){
         ui->setupUi(this);
         connect(ui->find, SIGNAL(next()), this, SLOT(accept()));
         connect(ui->close, SIGNAL(clicked()), this, SLOT(reject()));
    }
     
    Dialog::~Dialog() {
        delete ui;
    }
    bool Dialog::on_find_clicked()
    {
     
    }
     
    bool Dialog::on_close_clicked()
    {
     
    }

    voici ma fonction qui appelle la fonction pour trouver l'expression elle est dans mon mainwindow :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void MainWindow::Recherche()
    {
        Dialog dialog(this);
        if(dialog.exec()){
            QString searchString = dialog.ui->search->text();
            spreadsheet->find(searchString);
     
        }
    }

    la fonction qui recherche qui est dans ma classe spreesheet qui représente ma qtablewidget :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Spreadsheet::find(QString search)
    {
     /* for ( int col = 0; col < this->columnCount(); col++ ) {
           for( int row = 0; row < this->rowCount(); row++ ) {
               if(this->text(row,column) == search){
                   this->setCurrentCell(row,column);
                   activateWindow();
            }
           }
     
      }*/
    }
    la fonction text pour mieux comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    QString Spreadsheet::text(int row, int column) const
    {
        Cell *c = cell(row, column);
        if (c) {
            return c->text();
        } else {
            return "";
        }
    }

    et pour le glisser déposer dois-je mettre ma fonction qui le gère dans mon spreedsheet.cpp ou mon .h.
    Merci à vous de prendre de votre temps si vous-avez une idée même si vous n'êtes pas sur n'hésiter pas,en vous remerciant bonne soirée.

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    Pour la partie glisser/déposer, je n'ai pas très bien compris votre question. Cependant, par rapport à la popup qui se ferme, j'imagine que c'est au moment où vous arrivez dans votre activateWindow() ? C'est-à-dire que c'est au moment où vous souhaitez sélectionner la cellule que la popup disparaît ? Si c'est le cas, je vous conseillerais plutôt de passer votre Dialog non pas en exec() mais en show() et de faire hériter ça de QWidget au lieu de QDialog, en lui faisant un setWindowFlag à Qt::Tool. Vous ne pourrez cependant plus faire un if (dialog.show()) { ... }, vous devrez créer votre propre signal émis lorsque l'on clique sur le bouton Find.

    Bonne journée et bonnes fêtes,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 586
    Par défaut
    Merci de votre réponse, mais je veux vraiment utiliser une qdialog mais j'ai un problème pour émettre unn signal depuis une autre classe,ici je connect mon signal dans la class dialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ui->find, SIGNAL(next()), this, SLOT(find()));
    ici je veux le réémettre dans la class spreadsheet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Spreadsheet::find(QString search)
    {
     /* for ( int col = 0; col < this->columnCount(); col++ ) {
           for( int row = 0; row < this->rowCount(); row++ ) {
               if(this->text(row,column) == search){
                   this->setCurrentCell(row,column);
                   activateWindow();
            }
           }*/
     emit Dialog->next();
      }
    problème le compilateur me renvoi cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     .\tableur\spreadsheet.cpp:251:13: error: expected unqualified-id before '->' token
      emit Dialog->next();
    pour le glisser déposer ma question était dans le méthode virtual
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void dropEvent(QDropEvent *event)
        {
     
        }
    que dois-je écrire pour copier un qtablewidget par glisser déposer dans un autre,je sais que pour les fichier il faut les lire ici faut-il lire chaque cellule? merci du temps que vous prenez bonne fête.

  4. #4
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 586
    Par défaut
    Bonjour,pour le problème de signal je ne trouve pas la solution,pour le drag and drop fonctionne dans mon tableur mais pas dans un autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     this->setAcceptDrops(true);
        this->setDragDropMode(QAbstractItemView::InternalMove);
        this->setDropIndicatorShown(true);
    si j'ouvre un autre tableur et j'essaye un glisser déposer cela ne fonctionne pas pourriez-vous m'aider s'il vous plaît bonne journée .

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/02/2015, 22h08
  2. Un BAT pour un glisser-déposer
    Par Nerva dans le forum Programmation système
    Réponses: 0
    Dernier message: 07/10/2013, 10h41
  3. Crée un glisser déposer pour un créneau horaire
    Par gastoncs dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/07/2012, 14h36
  4. Réponses: 0
    Dernier message: 11/01/2011, 11h17
  5. Réponses: 0
    Dernier message: 21/12/2009, 15h53

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