2015-06-14 5 views
0

Я хочу показать QTreeView, когда пользователь выберет QAction из меню моего MainWindow (то есть AgendaWindow в моем случае).QTreeView немедленно закрывается

Проблема заключается в том, что когда я нажимаю на кнопку для ее отображения, она открывает QTreeView и немедленно закрывает ее. Я поставил бесконечный цикл (while(1<2)), но затем вся моя программа заблокирована, и я не смог найти что-то эквивалентное system("pause").

Вот моя функция:

void AgendaWindow::display_projects() 
{ 
    QStandardItemModel* model = new QStandardItemModel; 
    QStandardItem *parentItem= model->invisibleRootItem(); 
    for (std::vector<Projet*>::const_iterator it =PM.getInstance().getTab().begin(); it!= PM.getInstance().getTab().end(); it++) 
    { 
     // I display a project 

     QStandardItem* item=new QStandardItem(QString((*it)->getTitre())); 
     item->setFlags(item->flags() & ~Qt::ItemIsEditable); 
     parentItem->appendRow(item); 
     Projet* p = (*it); 
     // I display every project's tasks 

     for (std::vector<Tache*>::const_iterator itp = p->GetTabProjet().begin(); itp != p->GetTabProjet().end(); itp++) 
     { 
      QStandardItem* itemp = new QStandardItem((*itp)->getTitre()); 
      //itemp->setFlags(itemp->flags() & ~Qt::ItemIsEditable); 
      item->appendRow(itemp); 
     } 
    } 

    QTreeView *treeView=new QTreeView; 
    treeView->setModel(model); 
    treeView->show(); 
    //while(1<2); 
} 

Спасибо!

ответ

0

ОБНОВЛЕНИЕ: Этот ответ неверен. Объект находится в куче, а не в стеке. Однако есть потенциальная утечка памяти.

Созданный вами QTreeView является локальным для метода. Когда он выходит из сферы действия (когда метод заканчивается), он уничтожается. Вы должны иметь QTreeView, возможно, как член класса и при необходимости вызвать метод show.

Кажется, вам не хватает оснований относительно Qt и GUI. Читайте об Qt event loop.

+0

Я сделал класс, и это сработало, и тогда мне было любопытно повторить мой локальный метод, и это удивительно сработало! Я мог бы иметь свой главный сценарий, который имеет мою повестку дня и мое древовидное изображение, которое не уходит, пока я не закрою его. Благодаря ! –