csvmodelwriter.h
1 // Copyright (c) 2011-2020 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #ifndef BITCOIN_QT_CSVMODELWRITER_H 6 #define BITCOIN_QT_CSVMODELWRITER_H 7 8 #include <QList> 9 #include <QObject> 10 11 QT_BEGIN_NAMESPACE 12 class QAbstractItemModel; 13 QT_END_NAMESPACE 14 15 /** Export a Qt table model to a CSV file. This is useful for analyzing or post-processing the data in 16 a spreadsheet. 17 */ 18 class CSVModelWriter : public QObject 19 { 20 Q_OBJECT 21 22 public: 23 explicit CSVModelWriter(const QString &filename, QObject *parent = nullptr); 24 25 void setModel(const QAbstractItemModel *model); 26 void addColumn(const QString &title, int column, int role=Qt::EditRole); 27 28 /** Perform export of the model to CSV. 29 @returns true on success, false otherwise 30 */ 31 bool write(); 32 33 private: 34 QString filename; 35 const QAbstractItemModel* model{nullptr}; 36 37 struct Column 38 { 39 QString title; 40 int column; 41 int role; 42 }; 43 QList<Column> columns; 44 }; 45 46 #endif // BITCOIN_QT_CSVMODELWRITER_H