/** * @file PaiTreeWidget.h * @brief P.A.I系统定制发布的树控件 * @date 2012-10-18 */ #ifndef PAI_FRAME_WIDGET_PAITREEWIDGET_H #define PAI_FRAME_WIDGET_PAITREEWIDGET_H #include #include "Turtle.h" class QLabel; namespace pai { namespace gui { /** * @class PaiTreeWidget * @brief PaiTreeWidget是P.A.I系统定制发布的树控件 */ class PAI_WIDGET_EXPORT PaiTreeWidget : public QTreeWidget { Q_OBJECT public: /** * @brief 构造函数 * @param[in] pParent 父窗口句柄 */ PaiTreeWidget(QWidget *pParent = NULL); /** * @brief 析构函数 */ virtual ~PaiTreeWidget(); public slots: /** * @brief 按节点名搜索树,只显示搜索到的节点 * @param[in] keyword 搜索的关键字 * @param[in] column 要搜索的列 */ void Filter(const QString & keyword, int column = 0); /** * @brief 按节点名搜索树,只显示搜索到的节点 * @param[in] keyword 搜索的关键字 * @param[in] columns 要搜索的列 */ void Filter(const QString & keyword, QList columns); private: /** * @brief 指定节点是否属于查找结果的子代,本函数仅供Filter函数调用。 * @param[in] pItem 指定节点 * @return 返回数否属于查找结果的直系子代 */ bool IsGenerationOfFoundItem(QTreeWidgetItem *pItem); private: bool m_InSearching; ///< 表示是否正在进行搜索 QLabel *m_pTipLabel; ///< 搜索结果为空的提示文本信息框 signals: /** * @brief 搜索完成后触发此消息 * @param[in] pRootItem 根节点 */ void SearchFinished(QTreeWidgetItem *pRootItem); }; /** * @class PaiTreeWidgetItem * @brief 数据树item类,支持排序 */ class PAI_WIDGET_EXPORT PaiTreeWidgetItem : public QTreeWidgetItem { public: /** * @brief 构造函数 */ PaiTreeWidgetItem(); /** * @brief 构造函数 * @param[in] pParent 父窗口句柄 */ PaiTreeWidgetItem(QTreeWidgetItem *pParent); /** * @brief 析构函数 */ virtual ~PaiTreeWidgetItem(); /** * @brief 重写QTreeWidgetItem的比较函数 * @param[in] otherItem 其他比较对象 * @return 返回与其他item对象的比较结果 */ virtual bool operator < (const QTreeWidgetItem & otherItem) const; }; } } #endif ///< PAI_FRAME_WIDGET_PAITREEWIDGET_H