probleme de supression automatique d'une variable sur le heap
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:
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:
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:
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:
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:
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