热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

qt中pushbutton样式表_QtQPushButton样式表悬停(QtQPushButtonstylesheethover)

QtQPushButton样式表悬停(QtQPushButtonstylesheethover)我有以下按钮样式表:QPushButton:hover{backgro

Qt QPushButton样式表悬停(Qt QPushButton stylesheet hover)

我有以下按钮样式表:

QPushButton:hover{

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #ffd9aa,

stop : 0.5 #ffbb6e, stop : 0.55 #feae42, stop : 1.0 #fedb74);

}

QPushButton {

border: 1px solid #6593cf;

border-radius: 2px;

padding: 5px 15px 2px 5px;

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #f5f9ff,

stop : 0.5 #c7dfff, stop : 0.55 #afd2ff, stop : 1.0 #c0dbff);

color: #006aff;

font: bold large "Arial";

height: 30px;

}

QPushButton:pressed {

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #c0dbff,

stop : 0.5 #cfd26f, stop : 0.55 #c7df6f, stop : 1.0 #f5f9ff);

padding-top: 2px;

padding-left: 3px;

}

QPushButton:on {

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #5AA72D,

stop : 0.5 #B3E296, stop : 0.55 #B3E296, stop : 1.0 #f5f9ff);

padding-top: 2px;

padding-left: 3px;

}

QPushButton:disabled {

background: transparent #e5e9ee;

padding-top: 2px;

padding-left: 3px;

color: black;

}

我有一个按钮。 当它被按下时,侧面小部件被调整大小。 因此按钮获得按下的样式,当我释放它时获得悬停样式。 此外,窗口小部件被调整大小并且按钮“跟随”窗口小部件。 问题是当我用鼠标进行一些移动时,按钮会保持悬停状态并丢失它。 这是来自qt的错误还是我在样式表代码中遗漏了一些东西。

我做了一个动画gif显示情况:

IIveC.gif

谢谢

I have the following pushbutton stylesheet:

QPushButton:hover{

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #ffd9aa,

stop : 0.5 #ffbb6e, stop : 0.55 #feae42, stop : 1.0 #fedb74);

}

QPushButton {

border: 1px solid #6593cf;

border-radius: 2px;

padding: 5px 15px 2px 5px;

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #f5f9ff,

stop : 0.5 #c7dfff, stop : 0.55 #afd2ff, stop : 1.0 #c0dbff);

color: #006aff;

font: bold large "Arial";

height: 30px;

}

QPushButton:pressed {

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #c0dbff,

stop : 0.5 #cfd26f, stop : 0.55 #c7df6f, stop : 1.0 #f5f9ff);

padding-top: 2px;

padding-left: 3px;

}

QPushButton:on {

background: qlineargradient(x1 : 0, y1 : 0, x2 : 0, y2 : 1, stop : 0.0 #5AA72D,

stop : 0.5 #B3E296, stop : 0.55 #B3E296, stop : 1.0 #f5f9ff);

padding-top: 2px;

padding-left: 3px;

}

QPushButton:disabled {

background: transparent #e5e9ee;

padding-top: 2px;

padding-left: 3px;

color: black;

}

I have a button. When it's pressed a side widget is resized. Thus the button gets the pressed style, when I release it gets the hover style. Furthermore the widget is resized and the button "follows" the widget. The problem is that the button keeps the hover state and loses it when I do some movement with the mouse. Is this a bug from qt or I miss something in the stylesheet code.

I did a animated gif showing the situation:

IIveC.gif

Thanks

原文:https://stackoverflow.com/questions/25318538

更新时间:2019-11-19 02:49

最满意答案

你可以说这是Qt中的一个错误。 我会说这是一种由正确逻辑引起的错误。 为自己判断。 Hover状态由WA_UnderMouse小部件属性定义。 此属性由应用程序设置:

if ((e->type() == QEvent::Enter || e->type() == QEvent::DragEnter) ...

widget->setAttribute(Qt::WA_UnderMouse, true);

else if (e->type() == QEvent::Leave || e->type() == QEvent::DragLeave)

widget->setAttribute(Qt::WA_UnderMouse, false);

QEvent::Enter和QEvent::Leave事件仅在应用程序从OS接收鼠标事件时发送。

您不移动鼠标,应用程序不会收到任何鼠标事件,因此WA_UnderMouse属性不会更改。

解决这个问题的方法之一是在移动按钮小部件时自己将Qt::WA_UnderMouse属性设置为正确的值。

You can say that it's a bug in Qt. I would say it's a kind of bugs caused by right logic. Judge for yourself. Hover state is defined by WA_UnderMouse widget attribute. This attribute is set by the application:

if ((e->type() == QEvent::Enter || e->type() == QEvent::DragEnter) ...

widget->setAttribute(Qt::WA_UnderMouse, true);

else if (e->type() == QEvent::Leave || e->type() == QEvent::DragLeave)

widget->setAttribute(Qt::WA_UnderMouse, false);

QEvent::Enter and QEvent::Leave events are only sent when the application receives mouse event from OS.

You don't move mouse, the application doesn't receive any mouse event and so WA_UnderMouse attribute is not changed.

One of the ways to fix that is to set Qt::WA_UnderMouse attribute to the right value by yourself when moving the button widget.

2014-08-15

相关问答

不要这么想,你可能会通过逐步完成绘图代码来找到某些东西。 但是样式表的解析和应用程序相当优化,并且使用了很多预处理。 我甚至不认为如果它实际设置在父项中,则可以访问小部件的样式表。 Don't think so, you might be able to find something by stepping through the drawing code. But the parsing and the application of stylesheets is pretty optimised

...

它似乎特定于您的平台。 有许多错误报告具有相同的错误。 但是尝试为您的应用设置cleanlooks样式。 像这样的东西: app = QtGui.QApplication(sys.argv)

#QCleanlooksStyle

app.setStyle('cleanlooks')

或者使用命令行: ./myapp -style cleanlooks

It seems that it is specific for your platform. There are many bug report

...

你可以说这是Qt中的一个错误。 我会说这是一种由正确逻辑引起的错误。 为自己判断。 Hover状态由WA_UnderMouse小部件属性定义。 此属性由应用程序设置: if ((e->type() == QEvent::Enter || e->type() == QEvent::DragEnter) ...

widget->setAttribute(Qt::WA_UnderMouse, true);

else if (e->type() == QEvent::Leave || e-

...

对于问题的第二部分:不要使用“平面”属性,而是修改样式表以实现平面外观,也许如下所示: QPushButton#pushButton {

background-color: #ffffff;

border: 0px;

}

/* ... plus the rest of your stylesheet ... */

关于“为什么不起作用”的部分? 根据我的经验,为窗口小部件混合样式表和非样式表单选项会产生许多难以解释的神秘效果。 我放弃了要求“为什么”。 For the seco

...

在命名对象之前,首先需要setObjectName(“somename”),然后objectName()将起作用,甚至更好 - findChild()或findChildren() 例 标题: QButton foo;

类: foo = new QButton();

foo.setObjectName("MySuperButton");

然后,最后在你的QSS .. #MySuperButton {

background: black;

}

这也与CSS类似 QButton#My

...

最后我得到了解决方案。 这个想法与CSS属性选择相同。 因此property_1 =“true”AND property_2 =“true”条件是: MyButton[property_1="true"][property_2="true"] { background-color: green; }

Finally I got the solution. The idea is the same as CSS attribute selection. Thus property_1="true

...

我不认为你可以搞乱边框或填充而不影响小部件的默认大小。 你可以设置min-width 。 从文档: If this property is not specified, the minimum width is derived based on the widget's contents and the style. QPushButton {

border-radius: 2px;

padding: 0.2em 0.2em 0.3em 0.2em;

border: 1px

...

当您使用setMenu()设置QPushButton的菜单时,菜单将继续作为其自己的实体存在,因此您将使用适当的选择器来定位QMenu对象本身。 QMenu支持盒子模型。 可以在此处找到一些示例样式。 When you set the menu for a QPushButton using setMenu(), the menu continues to exist as its own entity so you would target the QMenu object itself wit

...

好吧,我没有找到任何解释或建议,所以我自己找到了解决方案。 为了突出显示QWidgetAction按钮,我添加了动态属性,就像在下面的代码中构建按钮的地方一样: m_pasteButton->setProperty("mouseHover", false);

然后,在按钮上安装过滤器并捕获Enter和Leave事件以确定何时鼠标悬停: bool CustomWidgetAction::eventFilter(QObject* object, QEvent* event)

{

if (ob

...

正常状态按钮的样式: QPushButton

{

color: red;

}

“已禁用”状态按钮的样式: QPushButton:!enabled

{

color:blue;

}

这可能会解决您的问题 Style for the normal state button: QPushButton

{

color: red;

}

Style for the "Disabled" state button: QPushButton:!enabled

{

co

...



推荐阅读
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文介绍了如何在AX2012中通过自定义查询在数据网格视图中显示所有记录的方法。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了一种利用 ESP8266 01S 模块构建 Web 服务器的成功实践方案。通过具体的代码示例和详细的步骤说明,帮助读者快速掌握该模块的使用方法。在疫情期间,作者重新审视并研究了这一未被充分利用的模块,最终成功实现了 Web 服务器的功能。本文不仅提供了完整的代码实现,还涵盖了调试过程中遇到的常见问题及其解决方法,为初学者提供了宝贵的参考。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 在 Vue 应用开发中,页面状态管理和跨页面数据传递是常见需求。本文将详细介绍 Vue Router 提供的两种有效方式,帮助开发者高效地实现页面间的数据交互与状态同步,同时分享一些最佳实践和注意事项。 ... [详细]
  • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 深入解析 Android Drawable:第六阶段进阶指南 ... [详细]
author-avatar
唉尼宝宝_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有