diff --git a/src/databaseview.cpp b/src/databaseview.cpp index 03504a3..25fe774 100644 --- a/src/databaseview.cpp +++ b/src/databaseview.cpp @@ -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(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); + } +} diff --git a/src/databaseview.h b/src/databaseview.h index f74e6c7..ffbfb0a 100644 --- a/src/databaseview.h +++ b/src/databaseview.h @@ -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: