Add support copy to clipboard for table
This commit is contained in:
+37
-2
@@ -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
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user