#ifndef PST_DELIMITEDTEXTREADER_H #define PST_DELIMITEDTEXTREADER_H #include #include #include #include #include class vtkTable; class vtkDelimitedTextReader; namespace pst { /** * @class DelimitedTextReader * @brief Read txt text. */ class DelimitedTextReader : public QObject { Q_OBJECT public: explicit DelimitedTextReader(QObject* parent = nullptr); ~DelimitedTextReader(); public: void SetFilePath(const QString& filePath); /** * Set/get whether to treat the first line of the file as headers. * The default is false (no headers). */ void SetHaveHeaders(bool haveHeaders); /** * Specify the character(s) that will be used to separate fields. For * example, set this to "," for a comma-separated value file. Set * it to ".:;" for a file where columns can be separated by a * period, colon or semicolon. The order of the characters in the * string does not matter. Defaults to a comma. */ void SetFieldDelimiterCharacters(const QString& flag); //自动为表格数据添加表头 //包括第一列为行号下标,第一行为标签 void AddTableHeaderAuto(bool addHeader); bool Update(); vtkTable* GetOutput(); std::vector GetXTitles(); std::vector GetYTitles(); private: void AddHeaderFromOriginalTable(); //产生可用于显示成xy轴的字符串表头 ///@生成可用于作为x和y轴的表头, ///即THETA和PHI哪个可以作为x轴,哪个可以作为y轴 void GenerateXYTitle(); private: QString m_filePath; vtkDelimitedTextReader* m_reader; bool m_shouldAddHeader; vtkTable* m_table; std::vector m_XTitles; std::vector m_YTitles; }; } //namespace PST #endif // PST_DELIMITEDTEXTREADER_H