#ifndef STABLE_H #define STABLE_H #include #include #include class STableNumberItem : public QTableWidgetItem { public: STableNumberItem(QString txt):QTableWidgetItem(txt) { } bool operator <(const QTableWidgetItem &other) const { return text().toDouble() < other.text().toDouble(); } bool operator >(const QTableWidgetItem &other) const { return text().toDouble() > other.text().toDouble(); } }; class STableWidgetItem : public QTableWidgetItem { public: STableWidgetItem(int type=Type):QTableWidgetItem(type){} STableWidgetItem(const QString& text, int type=Type):QTableWidgetItem(text, type){} STableWidgetItem(const QIcon& icon, const QString& text, int type = Type):QTableWidgetItem(icon, text, type){} STableWidgetItem(const QTableWidgetItem& other):QTableWidgetItem(other){} bool operator <(const QTableWidgetItem &other) const { bool tok = false; bool ook = false; int nThis = text().toInt(&tok); int nOther = other.text().toInt(&ook); if (!(tok && ook)) return text() < other.text(); else return nThis < nOther; } }; class STable : public QTableWidget { Q_OBJECT public: enum E_ARTICLE { E_ARTICLE_NONE = -1, E_ARTICLE_ALL = 0, E_ARTICLE_BODY = 1, E_ARTICLE_REPLY = 2, }; explicit STable(QWidget *parent = 0); void keyPressEvent(QKeyEvent* event); void SetHeaderList(QVector *_vecColumn,int _nColumn); void SetHeaderList(QStringList _Head); void setArticleSelect(int _nArticle); int getArticleSelect(){return m_nArticle;} void Copy(); void Paste(); void Delete(); static QString GetArticleType(int _nSelect); private: int m_nArticle; public: QStringList m_strListHeader; signals: public slots: void HeaderContextMenuShow(const QPoint& pos); void menuInsert(); void menuDelete(); void CellClick(int nRow,int nPrev); }; #endif // STABLE_H