【问题标题】:How To Remove click effect from a QPushButton如何从 QPushButton 中移除点击效果
【发布时间】:2012-09-20 04:29:12
【问题描述】:

在 QT 中:我只想显示一个图标和一些文本,所以我使用 QPushButton。但是如何去掉它的点击效果呢?

【问题讨论】:

  • “点击”效果是什么意思?你是说 3D 斜面吗?
  • 我认为他想将 QPushButton 基本上用作 QLabel,同时显示 Text 和 Icon ...

标签: css qt styles stylesheet appearance


【解决方案1】:

您可以继承 QPushButton 并忽略除 Paint 事件之外的所有事件:

class IconLabel : public QPushButton {

...

bool IconLabel::event ( QEvent * e ) {
   if (e->type() == QEvent::Paint) {
      return QPushButton::event(e);
   }
   return true;
}

根据您的要求,可能需要让其他事件通过,例如如果您想在 IconLabel 上使用工具提示:

   if (e->type() == QEvent::Paint ||
       e->type() == QEvent::ToolTip) {
      return QPushButton::event(e);
   }

【讨论】:

    【解决方案2】:

    我还没有尝试过这个solution,但看起来应该可以。

    从上面的链接复制

    使用富文本作为标签,例如:

    lbl->setTextFormat(Qt::RichText);
    lbl->setText("<img src=":/myimage.png">Hello!");
    

    【讨论】:

    • 不错的解决方案 :-) 刚刚试了一下,效果很好(稍微修改了 setText() 调用:lbl-&gt;setText("&lt;img src=\"myimage.png\"&gt;Hello!");,这还取决于您使用的是资源还是本地文件)。样式与 QPushButton 方法有点不同,例如没有框架,但这取决于 OP 的具体要求,并且肯定可以通过一些样式表进行调整。
    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    相关资源
    最近更新 更多