qcombobox 隐藏_Qt之QComboBox定制

本文介绍了如何使用Qt自定义QComboBox,以实现包含图片、文字和关闭按钮的复杂下拉列表,以及下拉表格。通过创建自定义窗口类CActionContentWidget,实现了列表项的鼠标事件处理,包括设置背景色和控制QComboBox的隐藏。此外,还展示了如何将自定义窗口放入QComboBox的下拉框中,以及如何处理下拉框的可编辑状态。文章最后提到了表格的实现,使用QTableWidget和自定义QCheckBox实现多选功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说起下拉框,想必大家都比较熟悉,在我们注册一些网站的时候,会出现大量的地区数据供我们选择,这个时候出现的就是下拉框列表,再比如字体选择的时候也是使用的下拉框,如图1所示。下拉框到处可见,作为一个图形库,qt也提供了QtComboBox类来供我们使用,但是有些时候简单的下拉列表已经满足不了我们的需求,如图2所示,是一个下拉表格,这个时候就需要我们自己定制一下QComboBox。

674b7c917689dc92cf32ac32a9dd6d19.png图1

a666d3b48aa5e6d78f656aadf91daec3.png图2

上边说了我们需求的变化,接下来我就讲述一下关于QComboBox定制的一些内容,本片文章我就只讲述两种常用的下拉选项控制,分别是列表和表格

一、列表的实现

首先我上一张qq的登录框,如图3所示,下拉列表里不仅仅是一个文字描述或者复选框,而是含有图片文字和关闭按钮的复杂窗口,那么这个时候简单的QComboBox是完成不了这项功能的,要做到像qq这样美观的功能是需要我们自己做一定的处理

af7e81e44246a0089ae35bfe0341b10b.png图3

列表窗口定制步骤如下:

1、首先我们需要自定义一个窗口,上边有我们需要操作的内容,这个窗口讲会是QComboBox下拉框中的一项,我自己定义的类名为CActionContentWidget,头文件如下:

1 class CActionContentWidget : publicQWidget2 {3 Q_OBJECT4 signals:5 voidIconClicked();6 void showText(const QString &);7

8 public:9 CActionContentWidget(const QString & text, QWidget * parent =nullptr);10 ~CActionContentWidget();11

12 public:13 void SetContentText(const QString & text);//设置显示文字

14 void SetItemIcon(const QString & icon, const QString & hover);//设置图标

15

16 public:17 void SetBackgroundRole(boolhover);18

19 protected:20 virtual void enterEvent(QEvent *) Q_DECL_OVERRIDE;//暂时没用

21 virtual void leaveEvent(QEvent *) Q_DECL_OVERRIDE;//暂时没用

22 virtual bool eventFilter(QObject *, QEvent *) Q_DECL_OVERRIDE;23 virtual void mousePressEvent(QMouseEvent *) Q_DECL_OVERRIDE;24

25

26 virtual void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE;27

28 private:29 voidInitializeUI();30

31 private:32 bool m_Mouse_press = false;33 QWidget * m_ContentWidget =nullptr;34 QPushButton * m_ActIcon =nullpt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值