记一次控件提升后,运行却不显示的Bug

[复制链接]
发表于 2024-10-9 17:32:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
.h文件
  1. #ifndef VOLUMETOOLBTN_H
  2. #define VOLUMETOOLBTN_H
  3. #include <QToolButton>
  4. #include <memory>
  5. class VolumeToolBtn : public QToolButton {
  6. Q_OBJECT
  7. public:
  8.     explicit VolumeToolBtn(QWidget *parent = nullptr);
  9.     ~VolumeToolBtn() override;
  10.     void initUi();
  11. protected:
  12.     void enterEvent(QEnterEvent *event) override;
  13.     void leaveEvent(QEvent *event) override;
  14. public slots:
  15.     void onClicked();
  16. private:
  17.     bool m_isNoVolume = false;
  18.     std::unique_ptr<QWidget>m_volumeWidget;
  19. };
  20. #endif //VOLUMETOOLBTN_H
复制代码
.cpp文件
  1. #include "VolumeToolBtn.h"
  2. VolumeToolBtn::VolumeToolBtn(QWidget *parent)
  3.     :QToolButton(parent)
  4.     ,m_volumeWidget(std::make_unique<QWidget>(this))
  5. {
  6.     initUi();
  7.     connect(this, &QToolButton::clicked, this, &VolumeToolBtn::onClicked);
  8. }
  9. VolumeToolBtn::~VolumeToolBtn() {}
  10. void VolumeToolBtn::initUi() {
  11.     this->setStyleSheet(R"(QToolButton{border-image: url(':///Res/playbar/volume-on-gray.svg');}
  12.                              QToolButton:hover{border-image: url(':///Res/playbar/volume-on-blue.svg');})");
  13. }
  14. 。。。。。后面省略
复制代码
找了半天发现原来是狗屎m_volumeWidget遮住了按钮。。。真是无语,头一回遇到这么奇葩的错误。改为m_volumeWidget(std::make_unique<QWidget>())即可
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表