在QabStretctTableModel项的QTableView中选择

在QabStretctTableModel项的QTableView中选择,qt,tableview,selection,Qt,Tableview,Selection,我创建了TableView(通过从QTableView)和Model(通过从QAbstractTableModel)并实现了我所需的所有功能,但现在我必须添加奇怪的功能-这些对象(存储在模型中)必须能够使表视图选择“它们的”行 它来自这样一个事实,即始终存在与它们相关的图形对象,每当我单击某个对象上的场景时,我都希望将焦点放在其在表视图中的表示上。我可以这样做吗?您的模型可以在每次更改选择时发出信号。大概是这样的: void CMyModel::sigUpdateSelection(const

我创建了
TableView
(通过从
QTableView
)和
Model
(通过从
QAbstractTableModel
)并实现了我所需的所有功能,但现在我必须添加奇怪的功能-这些对象(存储在模型中)必须能够使表视图选择“它们的”行


它来自这样一个事实,即始终存在与它们相关的图形对象,每当我单击某个对象上的场景时,我都希望将焦点放在其在表视图中的表示上。我可以这样做吗?

您的模型可以在每次更改选择时发出信号。大概是这样的:

void CMyModel::sigUpdateSelection(const QItemSelection & selection, QItemSelectionModel::SelectionFlags flags);
然后您可以将此信号连接到表视图的QItemSelectionModel。以下是获取选择模型的方式:

QTableView* view = new QTableView(parent);
QItemSelectionModel* selectionModel = view->selectionModel();
QItemSelectionModel
有一个插槽
select()
。这是连接信号的地方

这就是你将如何发射:

// Add to current selection
emit sigUpdateSelection(QItemSelection(indexLeft, indexRight), QItemSelectionModel::Select);

// Clear current selection and select new one
emit sigUpdateSelection(QItemSelection(indexLeft, indexRight), QItemSelectionModel::ClearAndSelect); 

您可以在每次想要更改选择时实现一个发出的信号。大概是这样的:

void CMyModel::sigUpdateSelection(const QItemSelection & selection, QItemSelectionModel::SelectionFlags flags);
然后您可以将此信号连接到表视图的QItemSelectionModel。以下是获取选择模型的方式:

QTableView* view = new QTableView(parent);
QItemSelectionModel* selectionModel = view->selectionModel();
QItemSelectionModel
有一个插槽
select()
。这是连接信号的地方

这就是你将如何发射:

// Add to current selection
emit sigUpdateSelection(QItemSelection(indexLeft, indexRight), QItemSelectionModel::Select);

// Clear current selection and select new one
emit sigUpdateSelection(QItemSelection(indexLeft, indexRight), QItemSelectionModel::ClearAndSelect); 

您可以通过模拟单击或双击来关注该行。也许它能起作用?但如何?我只有指向表项的指针(模型中包含的单个项,视图使用mdoel作为源)-我如何从这里到那里?哦,是的,我读的是QTableWidget而不是QTableView。我从来没有使用过QTableView。你可以通过模拟点击或双击来聚焦线条。也许它能起作用?但如何?我只有指向表项的指针(模型中包含的单个项,视图使用mdoel作为源)-我如何从这里到那里?哦,是的,我读的是QTableWidget而不是QTableView。我从未使用过QTableView。