Я довольно новичок в QT и не могу понять, как обрабатывается сигнал изменения выбора QTableView
.Я настроил окно с виджетом openGL и QTableView
.У меня есть класс модели данных, который правильно заполняет табличное представление, поэтому я добавил в этот класс открытый слот:
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
, но это тоже не сработало.Я действительно не уверен, что я делаю здесь не так.