我对QT很新,并且无法理解如何处理QTableView
选择更改信号。我已经设置了一个带有openGL小部件和QTableView
的窗口。我有一个正确填充tableview的数据模型类,所以我在该类中添加了一个公共插槽:
class APartsTableModel : public QAbstractTableModel
{
public:
AVehicleModel *vehicle;
explicit APartsTableModel(QObject *parent = 0);
//MVC functions
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &paret) const;
QVariant data(const QModelIndex &index, int role) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
public slots:
void selectionChangedSlot(const QItemSelection &newSelection,
const QItemSelection &oldSelection);
};
当我准备好用表视图显示窗口时,我会像这样分配/初始化它:
//create the display view
AStarModelView *displayWindow = new AStarModelView(this,
starModel->vehicle);
//create the datamodel for the table view
APartsTableModel *dataModel = new APartsTableModel(displayWindow);
dataModel->vehicle = starModel->vehicle;
//create selection model for table view
QItemSelectionModel *selModel = new QItemSelectionModel(dataModel);
displayWindow->materialsTable->setSelectionModel(selModel);
//setup model and signal
displayWindow->materialsTable->setModel(dataModel);
connect(selModel,
SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
dataModel,
SLOT(selectionChangedSlot(const QItemSelection &, const QItemSelection &)));
//show the view
displayWindow->show();
当我在插槽功能的实现中设置断点时,我从未点过它。我也尝试过不分配新的QItemSelectionModel
,但这也不起作用。我真的不确定我在这里做错了什么。
答案 0 :(得分:3)
在视图上调用setModel()时,本地分配的QItemSelectionModel将被视图创建的QItemSelectionModel替换。无论如何,您不必创建自己的选择模型。只需将连接更改为
即可connect(displayWindow->materialsTable->selectionModel(),
SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)),
dataModel,
SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&)));
答案 1 :(得分:0)
只是为了从讨论中得出答案:
当信号/插槽没有时,你应该在QT中检查的第一件事是什么 似乎工作正常?你的班级有Q_OBJECT宏 在里面。将此添加到APartsTable类定义中,现在我就是 击中断点
。
答案 2 :(得分:0)
当信号/插槽似乎无法正常工作时,您应该在QT中检查的第一件事是什么?您的类中包含Q_OBJECT宏。将此添加到APartsTable类定义中,现在我正在点击断点。
周五什么时候到这里?
答案 3 :(得分:-1)
virtual Qt::ItemFlags QAbstractItemModel::flags(const QModelIndex &index) const
必须返回Qt::ItemIsSelectable | otherFlags