customcombobox.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef _CUSTOMCOMBOBOX_H_
  2. #define _CUSTOMCOMBOBOX_H_
  3. #include <QComboBox>
  4. /**
  5. * @brief 1、使用此类绘制下拉框阴影需要在样式表中设置QAbstractItemView {margin: LISTVIEW_MARGIN;}
  6. * 否则阴影会被遮挡
  7. * 2、调用函数setViewShadowEffect()设置下拉框阴影
  8. * 3、调用setViewShadowEffect()前,需要先设置样式表
  9. * 4、如果选择框是提升来的,有概率设置了窗口的样式表后,这个没有,需要给这个单独设置一遍
  10. */
  11. class CustomComboBox : public QComboBox
  12. {
  13. public:
  14. explicit CustomComboBox(QWidget *parent = nullptr);
  15. ~CustomComboBox() override;
  16. /* 设置下拉框阴影,需要先设置样式表,再调用此函数 */
  17. void setViewShadowEffect();
  18. //重写下拉框弹出位置
  19. void showPopup() override;
  20. /* 禁用滚轮修改内容 */
  21. void setWheelDisabled(bool disabled = true) { m_wheelDisabled = disabled; }
  22. protected:
  23. void wheelEvent(QWheelEvent *event) override;
  24. private:
  25. const int LISTVIEW_MARGIN = 12; // QAbstractItemView边距(阴影宽度)
  26. bool m_wheelDisabled = false; // 是否禁用滚轮修改内容
  27. };
  28. #endif // _CUSTOMCOMBOBOX_H_