Russian Qt Forum

Qt => Model-View (MV) => Тема начата: joker от Январь 16, 2011, 01:24



Название: Теряются скрытые элементы при перемещении(QTreeView, QStandardItemModel)
Отправлено: joker от Январь 16, 2011, 01:24
Больше хочу переспросить, прав ли я что это бага.

В примере - дерево. Если элемент с двумя колонками перетащить в элемент "folder" то:
 - если вторая колонка будет видима она нормально переедет
 - если будет невидима (те перетащили и потом включили видимость) то эта колонка "пропадет".

Код:
#ifndef DIALOG_H
#define DIALOG_H

#include <QtGui>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
    QTreeView *view;
public slots:
    void showHidden();
};

#endif // DIALOG_H

Код:
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    view = new QTreeView();
    QStandardItemModel *model = new QStandardItemModel();
    QStandardItem *root = model->invisibleRootItem();

    QStandardItem *item1 = new QStandardItem("first_column ");
    root->setChild(0,item1);
    QStandardItem *item2 = new QStandardItem("second_column ");
    root->setChild(0,1,item2);

    QStandardItem *folder1 = new QStandardItem("folder");
    root->appendRow(folder1);


    view->setModel(model);
    view->setDragDropMode(QAbstractItemView::InternalMove);
    view->setColumnHidden(1, true);

    QPushButton *bt = new QPushButton("Show/Hide");

    connect(bt, SIGNAL(clicked()), this, SLOT(showHidden()));

    QVBoxLayout *lay = new QVBoxLayout();
    lay->addWidget(view);
    lay->addWidget(bt);
    setLayout(lay);
}

void Dialog::showHidden(){
    view->setColumnHidden(1, !view->isColumnHidden(1));
}

Dialog::~Dialog()
{

}