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 :

Utiliser le glisser-déposer

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 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 587
    Par défaut Utiliser le glisser-déposer
    Bonjour à tous j'essaye de faire un glisser déposer avec QT pour une applicationd e recherche afin de glisser directement un fichier dans ma textedit, mais j'ai un problème le prototypage de fonction n'ai pas bonne ou j'ai mal déclarer quelque chose pourriez-vous m'aider voici mon code pour textfinder.cpp:

    Code C++ : 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
    68
    69
    70
    71
    72
    73
    74
    75
    #include "textfinder.h"
    #include "ui_textfinder.h"
    #include <QFile>
    #include <QTextStream>
    #include <iostream>
    #include <QFileDialog>
    #include <QSyntaxHighlighter>
    #include <QMessageBox>
     
     
    textfinder::textfinder(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::textfinder)
    {
        ui->setupUi(this);
        setAcceptDrops(true);//ici j'autorise le glisser déposer
    }
     
    textfinder::~textfinder()
    {
        delete ui;
    }
     
    void textfinder::on_findbutton_clicked()
    {
         //on vérifie que le text edit contient bien du text
        if(ui->textEdit->toPlainText().isEmpty()){
           QMessageBox::critical(this, "Erreur", "Veuillez s'il vous plaît charger un texte à l'aide avec le menu en haut à gauche.");
         }
        //on vérifier qu'un mot à bien était entré
        if(ui->lineEdit->text().isEmpty()){
             QMessageBox::critical(this, "Erreur", "Veuillez saisir un mot à rechercher s'il vous plaît.");
        }
     
        QPalette palette = ui->textEdit->palette();
        palette.setColor(QPalette::Highlight, Qt::green);
     
      QString searchString = ui->lineEdit->text();
      if(ui->radioButton->isChecked()){
        ui->textEdit->find(searchString,QTextDocument::FindWholeWords);
      }else{
         ui->textEdit->find(searchString,QTextDocument::FindBackward);
      }
    }
     
     
    void textfinder::dropEvent(QDropEvent *event)
    {
        ui->textEdit->setPlainText(event->mimeData()->text());
        mimeTypeCombo->clear();
        mimeTypeCombo->addItems(event->mimeData()->formats());
     
        event->acceptProposedAction();
     
    }
     
     
    void textfinder::loadTextFile()
    {    QString cheminfichier;
         cheminfichier = QFileDialog::getOpenFileName(this,tr("Open file"),"C:/Users/kevin/Documents", tr(" File (*.txt;*.cpp;*.java;)"));
         QFile inputFile;
         inputFile.setFileName (cheminfichier);
        inputFile.open(QIODevice::ReadOnly);
        QTextStream in(&inputFile);
        QString line = in.readAll();
        inputFile.close();
        ui->textEdit->setPlainText(line);
        QTextCursor cursor = ui->textEdit->textCursor();
        cursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor, 0);
     
    }
     
    void textfinder::on_actionOuvrir_triggered()
    {   loadTextFile();
    }

    voici mon fichier .h:

    Code C++ : 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
    class textfinder : public QMainWindow
    {
        Q_OBJECT
     
    public:
        explicit textfinder(QWidget *parent = 0);
        ~textfinder();
     
    private slots:
        void on_findbutton_clicked();
     
        void on_actionOuvrir_triggered();
      //  void mousePressEvent();
        void dropEvent();
     
    private:
        Ui::textfinder *ui;
        void loadTextFile();
     
    };
     
    #endif // TEXTFINDER_H

    et enfin voici les erreurs retourné :

    Nom : drop.PNG
Affichages : 322
Taille : 15,3 Ko

    merci à vous cordialement.

  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,

    Vous vous êtes pour l'erreur tout simplement trompé dans le prototype du dropEvent() dans le .h :

    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void dropEvent(QDropEvent *event);
    Bonne journée,
    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 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 587
    Par défaut
    Je vous remercie de votre réponse Louis en effet sa fonctionne,mais pour le glissement cela ne fonctionne pas je ne comprends pas:

    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void textfinder::dropEvent(QDropEvent *event)
    {
        ui->textEdit->setPlainText(event->mimeData()->text());
        mimeTypeCombo->clear();
        mimeTypeCombo->addItems(event->mimeData()->formats());
     
        event->acceptProposedAction();
     
    }

    le compilateur me dis 'mimeTypeCombo' was not declared in this scope.J'avais vue se code sur developpez mais de quel type doit-il être et cette instruction est-elle absolument nécessaire pour déposer mon fichier dans mon textEdit cordialement.

  4. #4
    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,

    J'imagine qu'il s'agit d'un QListView ou quelque chose dans le genre, c'est-à-dire un élément graphique contenant une liste d'éléments. Dans le cas présent, je ne pense pas que vous en ayez besoin, par conséquent je vous suggère de retirer les deux lignes contenant ce widget, ce qui devrait vous éviter cette erreur.

    Bonne journée,
    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

  5. #5
    Membre Expert

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

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 587
    Par défaut
    Merci de votre réponse en effet je n'ai plus l'erreur l'application se lance mais quand je veux déposer un fichier texte dans ma textedit sa m'affiche le path du fichier je ne comprend pas pourquoi me manque t-il une fonction?

  6. #6
    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
    Bonsoir,

    En gros, vous souhaitez faire un drag'n'drop d'un fichier et que le contenu de ce fichier s'ajoute au champ de texte ?
    Si c'est le cas, je vous propose ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QFile file(event->mimeData()->text());
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
        ui->textEdit->setPlainText(QString(file.readAll()));
    else
        qDebug(qPrintable(file.errorString()));
    En théorie cela devrait fonctionner, sinon cela affichera un warning dans les logs de l'application.

    Bonne soirée,
    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/02/2006, 14h33
  2. Listes Simples et propriétés / Glisser déposer
    Par MeRc|LeSs dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 03/12/2005, 23h14
  3. Paramétrage du glisser-déposer selon l'application cible
    Par annedeblois dans le forum Windows
    Réponses: 3
    Dernier message: 17/10/2005, 21h57
  4. Glisser déposer sur formulaire
    Par norvel dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 11h20
  5. [MFC] Glisser/Déposer dans une CView
    Par octopus984 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2005, 10h15

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