Added generic copySelectionToClipboard function that takes the selection
of a model based tableview and copies the data as CSV to the clipoard.
This commit is contained in:
parent
798f8f51b9
commit
242f5464df
2 changed files with 36 additions and 0 deletions
34
util.cpp
34
util.cpp
|
|
@ -1,4 +1,8 @@
|
|||
#include "util.h"
|
||||
#include "csvwriter.h"
|
||||
#include <QApplication>
|
||||
#include <QTextStream>
|
||||
#include <QClipboard>
|
||||
|
||||
// Supported range from microseconds to seconds
|
||||
// min:sec to hours::min::sec
|
||||
|
|
@ -47,3 +51,33 @@ QString msfloatToHumanReadableString(float ms)
|
|||
QString result = QString::asprintf("%0.*f", deci, val);
|
||||
return result + unit;
|
||||
}
|
||||
|
||||
void copySelectionToClipboard(const QTableView *view)
|
||||
{
|
||||
//QAbstractItemModel * model = resultModel; //view->model();
|
||||
QItemSelectionModel * selection = view->selectionModel();
|
||||
|
||||
QModelIndexList selectedIndexes = selection->selectedIndexes();
|
||||
|
||||
if (selectedIndexes.count() > 0) {
|
||||
QString clipboard_string;
|
||||
QTextStream out(&clipboard_string, QIODevice::WriteOnly);
|
||||
CsvWriter csv(&out);
|
||||
csv.setSeperator('\t');
|
||||
csv.setQuote('"');
|
||||
|
||||
int previous_row = selectedIndexes[0].row();
|
||||
// for (int i = 0; i < selectedIndexes.count(); ++i) {
|
||||
// QModelIndex current = selectedIndexes[i];
|
||||
for (auto current : selectedIndexes) {
|
||||
if (current.row() > previous_row) {
|
||||
csv.nextRow();
|
||||
previous_row = current.row();
|
||||
}
|
||||
QString display_text = current.data(Qt::DisplayRole).toString();
|
||||
csv.writeField(display_text);
|
||||
}
|
||||
out.flush();
|
||||
QApplication::clipboard()->setText(clipboard_string);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue