繁体   English   中英

QT 自定义小部件悬停

[英]QT custom widget hover

我制作了带有两个标签的自定义小部件。 第一个用于显示选择的颜色,第二个用于显示文本。 我想制作悬停效果。 我尝试了不同的方法,但所有方法都以相同的结果结束。 悬停有效,但仅适用于这两个块(如下图所示:)

在此处输入图片说明 在此处输入图片说明

我想将整个块突出显示为一个(如下所示的红色矩形区域):

在此处输入图片说明

我试图在自定义小部件构造函数中实现:

this->setStyleSheet(":hover{ background-color: rgba(0,20,100,0.5); }");

我还尝试将 QFrame 对象添加到我的 ui 并用我的自定义小部件替换它。 这两种方法都不起作用。 我找到了这个话题: 在 Qt 中为整个小部件设置样式表

有人设法做到了:

最后我解决了在主 QWidget 中创建 QFrame 并设置该 QFrame 的 StyleSheet 的问题。

我尝试过这种方法,但我不确定我是否正确地应用了它(可能不是因为那仍然不起作用)。 有人可以帮我吗?

我有同样的问题,我想你的解决方案是最简单的。 顺便说一句,正确的决定是为您的自定义小部件覆盖 EventFilter() 方法。 像这样:

bool CustomWidget::eventFilter(QObject *obj, QEvent *event)
{
    if (obj ==  ui->pushButton) {
          QEvent::Type type = event->type();
          if  (type == QEvent::HoverLeave) {
 
             qDebug()<<"No";
 
          } else if (type == QEvent::HoverEnter) {
 
             qDebug()<<"YES";
 
          }else if (type == QEvent::MouseButtonPress) {
            qDebug()<<"enter";
          }
      }
 
      return QWidget::eventFilter(obj, event);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM