Bonjour,
j'ai un problème de suppression automatique d'une variable déclarée sur le heap sous Qt Creator.
lorsque je veux y accéder, le programme ferme brutalement.
Je vous donne mon code de tout le projet:

main.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#include <QtGui/QApplication>
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
et voici mainwindow.h:

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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QStringListModel>
namespace Ui {
    class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
 
private:
    Ui::MainWindow *ui;
   QStringListModel *modele;
private slots:
 
     void clicSelection();
 
};
 
#endif // MAINWINDOW_H
puis mainwindow.cpp
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
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QList>
#include <QStringList>
 #include <QStringListModel>
#include<QDirModel>
#include<QMessageBox>
#include<QVariant>
QStringList listePays;

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

        listePays << "France" << "Espagne" << "Italie" << "Portugal" << "Suisse";
        QStringListModel *modele = new QStringListModel(listePays);
        ui->listView->setModel(modele);
        ui->listView->setEditTriggers(0);

        connect(ui->affichesel, SIGNAL(clicked()), this, SLOT(clicSelection()));

}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::clicSelection()
{

    QItemSelectionModel *selection = ui->listView->selectionModel();
    QModelIndex indexElementSelectionne = selection->currentIndex();
    QVariant elementSelectionne = modele->data(indexElementSelectionne,Qt::DisplayRole);
    QMessageBox::information(this, "Elément sélectionné", elementSelectionne.toString());
}
voici la sortie du programme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Démarrage de /home/mino/test_listWiew-build-desktop/test_listWiew...
Le programme s'est terminé subitement.
/home/mino/test_listWiew-build-desktop/test_listWiew s'est terminé avec le code 0
/home/mino/test_listWiew-build-desktop/test_listWiew s'est terminé avec le code 0
si je remplace la fonction void MainWindow::clicSelection()
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void MainWindow::clicSelection()
{

    QStringListModel *modele2 = new QStringListModel(listePays);
    QItemSelectionModel *selection = ui->listView->selectionModel();
    QModelIndex indexElementSelectionne = selection->currentIndex();
    QVariant elementSelectionne = modele2->data(indexElementSelectionne,Qt::DisplayRole);
    QMessageBox::information(this, "Elément sélectionné", elementSelectionne.toString());

}
cela fonctionne. Il semble que modele soit hors de portée.
pourquoi?
Merci de bien vouloir m'aider