欢迎来到天天文库
浏览记录
ID:37895964
大小:37.00 KB
页数:6页
时间:2019-06-02
《Qt之自定义检索框》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Qt之自定义检索框1、效果展示今天这篇文章主要讲解的是自定义搜索框,不仅仅支持搜索,而且可以支持搜索预览,具体请看效果图1。网上也有一些比较简单明了的自定义搜索框,比如Qt之自定义搜索框,讲的也比较详细,不过本文的侧重点不仅仅是搜索,而且包括了检索功能。有兴趣的小伙伴可以看下步骤3的思路讲解。2、功能分析这个自定义搜索框支持输入一定的数据源,然后通过检索窗口进行搜索数据,匹配到的数据会优先展示到预览下拉框,预览窗口支持hover高亮整行。仔细阅读demo源码的同学可能就会发现其实这个搜搜框的左侧又一个按钮是可以点击的,但是目前还没有添加具体的点击功能。了解了这个控件的功能之后,如果觉得对你
2、有用,那么就可以接着继续往下看实现流程。回到顶部3、思路讲解问题分析:1、数据源存储在哪儿?怎么实现检索2、弹出式下拉框显示和隐藏控制?位置同步?3、鼠标hover状态的颜色设置?首先在讲解源码之前,我抛出了3个问题,有精力的同学可以先思考下这几个问题,然后在接着往下看,下边我也会逐一说明这个些问题。源码讲解:1、使用到的类:StockSortFilterProxyModel:过滤数据源,该model上的数据索引直接供视图展示StockTableView:自定义视图,用于显示预览数据StockListWidget:自定义搜索框StockItemDelegate:自定义委托,提供自定义绘图上
3、边4个类是完成自定义搜索框的自定义类,当然除了上述4个类以外,还用到了qt自带的一些类,更好的理解这些类,那么这个自定义控件的思路也就显得异常好理解。2、头文件说明委托:负责视图绘制复制代码1classIView;23structStockItemDelegatePrivate4{5intcolumn=1;//进度条所在列,下标从0开始6QTableView*parent=nullptr;7IView*view=nullptr;8};910classStockItemDelegate:publicQStyledItemDelegate11{12Q_OBJECT1314public:15St
4、ockItemDelegate(QTableView*parent=nullptr);16~StockItemDelegate(){};1718public:19voidsetView(IView*view);2021protected:22virtualvoidpaint(QPainter*painter23,constQStyleOptionViewItem&option24,constQModelIndex&index)constQ_DECL_OVERRIDE;2526virtualQSizesizeHint(constQStyleOptionViewItem&option,27co
5、nstQModelIndex&index)constQ_DECL_OVERRIDE;2829private:30QScopedPointerd_ptr;31};复制代码窗口布局:StockTableView是专门用来展示检索后的数据,StockListWidget是窗口布局复制代码1classIView2{3public:4virtualvoidSetMouseOver(int)=0;5};67classStockTableView:publicQTableView,publicIView8{9Q_OBJECT10public:11Sto
6、ckTableView(QStandardItemModel*model,QWidget*parent=0);1213public:14voidSetMouseOver(int);1516protected:17virtualvoidmouseMoveEvent(QMouseEvent*event)override;18virtualvoidleaveEvent(www.baiyuewang.netQEvent*event)override;19virtualvoidmousePressEvent(QMouseEvent*event)override;2021private:22intcu
7、rrHovered;23voiddisableMouseOver();2425private:26QStandardItemModel*m_pSourceModel;27};2829structStockListWidgetPrivate;3031classStockListWidget:publicQWidget,publicQAbstractNativeEventFilter32{33Q_OBJECT3435publ
此文档下载收益归作者所有