JustPaste.it

```
#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;
}