```
#include "MyWindow.h"
#include <QVBoxLayout>
#include <QStandardItem>
#include <QDebug>
MyWindow::MyWindow(QWidget *parent) : QDialog(parent) {
tableView = new QTableView(this);
model = new QStandardItemModel(10, 4, this);
tableView->setModel(model);
model->setHorizontalHeaderLabels({"Text 1", "Image 1", "Text 2", "Image 2"});
for (int row = 0; row < 10; ++row) {
for (int column = 0; column < 4; ++column) {
if (column % 2 == 0) {
QStandardItem* item = new QStandardItem(QString("Text %1").arg(row * 2 + column / 2 + 1));
model->setItem(row, column, item);
} else {
QStandardItem* item = new QStandardItem();
item->setData(QVariant(QPixmap()), Qt::DecorationRole);
model->setItem(row, column, item);
}
}
}
QVBoxLayout* layout = new QVBoxLayout(this);
layout->addWidget(tableView);
setLayout(layout);
tableView->setSelectionMode(QAbstractItemView::SingleSelection);
tableView->setSelectionBehavior(QAbstractItemView::SelectColumns);
selectionModel = tableView->selectionModel();
connect(selectionModel, &QItemSelectionModel::selectionChanged,
this, &MyWindow::onSelectionChanged);
}
void MyWindow::updateImage(int row, int column, const QString& imagePath) {
if (row >= 0 && row < model->rowCount() && column >= 0 && column < model->columnCount() && column % 2 == 1) {
QPixmap pixmap(imagePath);
if (!pixmap.isNull()) {
QStandardItem* item = model->item(row, column);
item->setData(QVariant(pixmap), Qt::DecorationRole);
} else {
qDebug() << "Image not found";
}
} else {
qDebug() << "Row or column out of bounds, or not an image column";
}
}
void MyWindow::onSelectionChanged() {
// Ensure the selectionChanged signal is emitted
qDebug() << "Selection changed!";
// Fetch the currently selected indexes
QModelIndexList selectedIndexes = selectionModel->selectedIndexes();
// Track selected columns
QSet<int> selectedColumns;
for (const QModelIndex &index : selectedIndexes) {
if (index.isValid()) {
selectedColumns.insert(index.column());
}
}
// Convert QSet<int> to QList<int>
QList<int> selectedColumnList = QList<int>::fromVector(QVector<int>::fromList(selectedColumns.values()));
std::sort(selectedColumnList.begin(), selectedColumnList.end());
// Print selected column indices
qDebug() << "Selected columns:" << selectedColumnList;
}