首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QTreeView立即关闭

QTreeView立即关闭
EN

Stack Overflow用户
提问于 2015-06-14 17:44:01
回答 1查看 33关注 0票数 0

当用户从我的QTreeView (在我的例子中是AgendaWindow )的菜单中选择该QAction时,我想显示一个MainWindow

问题是,当我单击该按钮以显示它时,它会立即打开QTreeView并将其关闭。我放了一个无限循环(while(1<2)),但是我所有的程序都被阻塞了,我找不到与system("pause")等价的东西。

下面是我的函数:

代码语言:javascript
复制
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);
}

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-06-15 00:12:06

更新:这个答案是错误的。对象在堆上,而不是堆栈上。但是有一个潜在的内存泄漏。

您正在创建的QTreeView对于该方法是本地的。当它超出作用域时(当方法结束时),它将被销毁。您可能需要将QTreeView作为类的成员,并在方便的时候调用show方法。

你似乎缺乏关于Qt和GUI的基础知识。阅读有关Qt event loop的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30827939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档