Add support copy to clipboard for table

This commit is contained in:
2026-04-12 10:20:43 +02:00
parent 63149745ed
commit 885a5b4c6d
2 changed files with 46 additions and 3 deletions
+37 -2
View File
@@ -239,7 +239,8 @@ void FITSFileModel::prepareQuery()
if(!query.exec())
qWarning() << "Failed to exectute query" << query.lastQuery() << bindValuesJoin << bindValues;
setQuery(std::move(query));
else
setQuery(std::move(query));
setHeaderData(0, Qt::Horizontal, tr("File name"));
i = 1;
@@ -255,7 +256,7 @@ void FITSFileModel::prepareQuery()
m_markedFiles = QSet<QString>(list.begin(), list.end());
}
DatabaseTableView::DatabaseTableView(QWidget *parent) : QTableView(parent)
DatabaseTableView::DatabaseTableView(QWidget *parent) : CopyTableView(parent)
{
}
@@ -498,3 +499,37 @@ void DataBaseView::visible(bool visible)
{
if(visible)m_model->load();
}
CopyTableView::CopyTableView(QWidget *parent) : QTableView(parent)
{
}
void CopyTableView::keyPressEvent(QKeyEvent *event)
{
if(event->matches(QKeySequence::Copy))
{
QModelIndexList list = selectedIndexes();
QString table;
if(list.size() == 0)return;
int row = list.first().row();
int col = list.first().column();
for(auto &index : list)
{
if(row != index.row())
table.append('\n');
else if(col != index.column())
table.append('\t');
table.append(index.data().toString());
row = index.row();
col = index.column();
}
qApp->clipboard()->setText(table);
event->accept();
}
else
{
QTableView::keyPressEvent(event);
}
}
+9 -1
View File
@@ -44,7 +44,15 @@ protected:
void prepareQuery();
};
class DatabaseTableView : public QTableView
class CopyTableView : public QTableView
{
Q_OBJECT
public:
explicit CopyTableView(QWidget *parent = nullptr);
void keyPressEvent(QKeyEvent *event);
};
class DatabaseTableView : public CopyTableView
{
Q_OBJECT
public: