Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: nvek от Март 30, 2017, 12:57



Название: сигнал на выделение элементов treeView
Отправлено: nvek от Март 30, 2017, 12:57
всяко разно уже писал
connect(treeView->setSelectionModel(_selection), &QItemSelection::select, &MainForm::treeSelectionChanged);

как получить выделенный элемент во вьюшке?
можно только один выделенный

поставил на слот точку останова и ничего не происходит
connect(_selection, SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(treeSelectionChanged(const QItemSelection&, const QItemSelection&)));



Название: Re: сигнал на выделение элементов treeView
Отправлено: __Heaven__ от Март 30, 2017, 13:42
Кажется вы не совсем то соединяете.
Надо соединять QItemSelectionModel, а не QItemSelection


Название: Re: сигнал на выделение элементов treeView
Отправлено: __Heaven__ от Март 30, 2017, 13:44
QAbstractItemView::setSelectionModel вообще void возвращает, первый коннект, вроде как и скомпилироваться не должен.


Название: Re: сигнал на выделение элементов treeView
Отправлено: vic57 от Март 31, 2017, 04:15
Код:
        model = new Model(this,db);
        qDebug() << view->selectionModel();
        view->setModel(model);
        qDebug() << view->selectionModel();
        /*connect(SIGNAL(view->selectionModel()->selectionChanged()),SLOT(...));*/
выхлоп
Код:
QObject(0x0)  
QItemSelectionModel(0x1010f5850)


Название: Re: сигнал на выделение элементов treeView
Отправлено: nvek от Апрель 03, 2017, 09:59
я вроде то что надо соединяю
Код:
treeView = new QTreeView();
  treeView->header()->hide();
  treeView->setModel(treeCtrl);
  QItemSelectionModel* _select;
  _select = new QItemSelectionModel(treeCtrl);
  treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
  treeView->setContextMenuPolicy(Qt::CustomContextMenu);

  connect(treeView, &QWidget::customContextMenuRequested, this, &MainForm::treeContextMenu);
  connect(_select, &QItemSelectionModel::selectionChanged,
    this, &MainForm::treeSelectionChanged);


и мой слот:
Код:
void MainForm::treeSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected)
{
  qDebug() << "selectionChanged";
  QModelIndex index = selected.indexes().at(0);

  propCtrl = new StatPropCtrl(&index);
}
не робит :(


Название: Re: сигнал на выделение элементов treeView
Отправлено: gil9red от Апрель 03, 2017, 10:05
А зачем создавать QItemSelectionModel? Она уже есть у модели, сделайте так:

Код
C++ (Qt)
connect(treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MainForm::treeSelectionChanged);