CSV形式(カンマ区切り)ファイルからデータを読み込み、表(QTable)にデータを表示します。
環境:QT5.5
リンク
http://doc.qt.io/qt-5/qwidget.html
http://doc.qt.io/qt-5/qmainwindow.html
http://doc.qt.io/qt-5/qcommandlinkbutton.html
http://doc.qt.io/qt-5/qhboxlayout.html
http://doc.qt.io/qt-5/qvboxlayout.html
http://doc.qt.io/qt-5/qstandarditemmodel.html
http://doc.qt.io/qt-5/qstackedlayout.html
http://doc.qt.io/qt-5/qtableview.html
インクルードファイル
1 2 3 4 5 6 7 8 | #include <QWidget> #include <QMainWindow> #include <QCommandLinkButton> #include <QHBoxLayout> #include <QVBoxLayout> #include <QStandardItemModel> #include <QStackedLayout> #include <QTableView> |
ヘッダーファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | class ClassA : public QMainWindow { Q_OBJECT public: explicit ClassA(QWidget *parent = 0); ~ClassA(); private slots: void csvDisplay(bool); private: Ui::ClassA *ui; // Window Object QHBoxLayout *mainLayout; QVBoxLayout *leftLayout; QVBoxLayout *rightLayaut; QStackedLayout *rightTop; QHBoxLayout *rightBottom; QCommandLinkButton *csvButton; QTableView *csvTable; QStandardItemModel *csvModel; // Function void initWindow(); }; #endif // ClassA_H |
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include "ClassA.h" #include "ui_ClassA.h" //=========================================================== // コンストラクタ //=========================================================== ClassA::ClassA(QWidget *parent) : QMainWindow(parent), ui(new Ui::ClassA) { ui->setupUi(this); // 画面作成 initWindow(); // 画面動作設定 ボタンが押されたらログを表に表示する。 QObject::connect(csvButton, SIGNAL(clicked(bool)),this,SLOT(csvDisplay(bool))); } //=========================================================== // デストラクタ //=========================================================== ClassA::~ClassA() { delete ui; } //=========================================================== // 画面の初期設定 //=========================================================== void ClassA::initWindow() { //*** 画面左側 // パーツ作成 leftLayout = new QVBoxLayout; csvButton = new QCommandLinkButton(tr("CSVファイル表示")); // 配置 leftLayout->addWidget(csvButton); leftLayout->addStretch(); //*** 画面右側 rightLayaut = new QVBoxLayout; rightTop = new QStackedLayout; // Table:カーネルログ出力表示設定 csvTable = new QTableView; csvTable->setSortingEnabled(true); csvModel = new QStandardItemModel; csvModel->setColumnCount(4); // 4カラム csvModel->setHorizontalHeaderLabels(QStringList() << tr("カラム1") << tr("カラム2") << tr("カラム3") << tr("カラム4"); csvTable->setModel(csvModel); rightTop->addWidget(csvTable); rightTop->setCurrentWidget(csvTable); //*** 画面全体 mainLayout = new QHBoxLayout; mainLayout->addLayout(leftLayout); mainLayout->addLayout(rightLayaut); ui->centralwidget->setLayout(mainLayout); } //=========================================================== // csv表示 //=========================================================== void ClassA::csvDisplay(bool) { // CSVファイルからデータ読込→表示 QFile flcsv("C:\text.csv"); flcsv.open(QFile::ReadOnly | QFile::Text ); QTextStream in(&flcsv); QString line; QList<QStandardItem *> itemList; quint8 lineCnt = 0; while ( !in.atEnd() ) { line = in.readLine(); for(QString item: line.split(",")) { itemList.append(new QStandardItem(item)); } csvModel->insertRow(csvModel->rowCount(), itemList); lineCnt++; itemList.clear(); } flcsv.close(); } |
コメント