当前位置: 首页>>代码示例>>C++>>正文


C++ TreeModel::appendRow方法代码示例

本文整理汇总了C++中TreeModel::appendRow方法的典型用法代码示例。如果您正苦于以下问题:C++ TreeModel::appendRow方法的具体用法?C++ TreeModel::appendRow怎么用?C++ TreeModel::appendRow使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TreeModel的用法示例。


在下文中一共展示了TreeModel::appendRow方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: QWidget

TestTreeView::TestTreeView(QWidget *parent) : QWidget(parent)
{
    SqlConnection::getInstance();

    /**
     * Vue représentant l'arbre
     * Envoi les signaux Datachanged pour mettre à jour la base de donnée
     * La vue n'est pas directement connectée au model
     */
    TreeView* treeView = new TreeView;

    /**
     * Création du model
     */
    QSqlRelationalTableModel*model = new QSqlRelationalTableModel();
    model->setTable("Course");
    int semesterIndex = model->fieldIndex("semesterId");
    int courseIndex = model->fieldIndex("name");

    // Relation (Liste des semestre)
    model->setRelation(semesterIndex, QSqlRelation("Semester", "id", "name"));
    model->select();

    QSqlTableModel* relmodel = model->relationModel(semesterIndex);
    TreeModel* treeModel = new TreeModel(0,1);

    /**
      Construction de l'arbre (treeView)
      */
    for(int row=0; row < relmodel->rowCount(); row++){

        // Parcours de la liste les semestre
        QString SemesterName = relmodel->index(row,1).data().toString();
        QStandardItem* semester = new QStandardItem(SemesterName);
        treeModel->appendRow(semester);

        // Ajout des fils (cours)
        for(int i=0; i < model->rowCount(); i++){
            QString s = model->index(i,semesterIndex).data().toString();

            if(s == SemesterName){
                QStandardItem* course = new QStandardItem(model->index(i,courseIndex).data().toString());
                semester->appendRow(course);
            }
        }
    }

    /**
     * ces signaux ne marche pas forcément
     * le but est de détecté si le model change depuis un autre widget
     * Il faudra mettre à jour l'arbre dans ce cas;
     */
    // Si le model change
    connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(update(QModelIndex,QModelIndex)));
    // si la relation change (ne  marche pas !?)
    connect(relmodel, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(update(QModelIndex,QModelIndex)));


    QVBoxLayout* layout = new QVBoxLayout(this);
    layout->setContentsMargins(0,0,0,0);
    treeView->setSelectionBehavior(QAbstractItemView::SelectRows);
    treeView->setItemDelegate(new TreeDelegate );
    treeView->setModel(treeModel);
    layout->addWidget(treeView);

    resize(800,300);
}
开发者ID:paulnta,项目名称:ProAgenda,代码行数:67,代码来源:testtreeview.cpp


注:本文中的TreeModel::appendRow方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。