QIcon的Mode和State让我困惑啊~

大胃 2012-02-02 12:55:37
我想让按钮在被按下时显示一个图标,释放后及其它任何状态显示另一个图标,要怎么设置。
目前我用QPushButton达不到满意的效果:
ICON1.addFile(QString::fromUtf8(":/images/Normal.png"), QSize(), QIcon::Normal, QIcon::Off);
ICON1.addFile(QString::fromUtf8(":/images/Normal.png"), QSize(), QIcon::Normal, QIcon::On);
ICON1.addFile(QString::fromUtf8(":/images/Pressed.png"), QSize(), QIcon::Active, QIcon::Off);
ICON1.addFile(QString::fromUtf8(":/images/Pressed.png"), QSize(), QIcon::Active, QIcon::On);
ICON1.addFile(QString::fromUtf8(":/images/Normal.png"), QSize(), QIcon::Selected, QIcon::Off);
ICON1.addFile(QString::fromUtf8(":/images/Normal.png"), QSize(), QIcon::Selected, QIcon::On);
BT1->setIcon(ICON1);

哪位大侠知道是怎么回事?
...全文
747 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
大胃 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangxkww 的回复:]
ui->pushButton->setStyleSheet(" \
QPushButton{\
border-image:url(Sunset.jpg);\
}\
QPushButton:pressed {\
border-image:url(Winter.jpg);\
}");

qss可以很简单的解决吧……
[/Quote]
哈~这才是我想要的!
wangxkww 2012-02-02
  • 打赏
  • 举报
回复
ui->pushButton->setStyleSheet(" \
QPushButton{\
border-image:url(Sunset.jpg);\
}\
QPushButton:pressed {\
border-image:url(Winter.jpg);\
}");

qss可以很简单的解决吧……
xiachm 2012-02-02
  • 打赏
  • 举报
回复
可以尝试使用QSS
大胃 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiachm 的回复:]
在BT1的pressed槽里设置:BT1->setIcon(QIcon(":/images/Pressed.png"));
在BT1的release槽里设置:BT1->setIcon(QIcon(":/images/Normal.png"));
[/Quote]

是的,我已经按这个方法实现了,只是觉得好复杂,界面上按钮比较多。QPushButton这个类居然不能实现这个很常见的要求,不应该呀!
xiachm 2012-02-02
  • 打赏
  • 举报
回复
在BT1的pressed槽里设置:BT1->setIcon(QIcon(":/images/Pressed.png"));
在BT1的release槽里设置:BT1->setIcon(QIcon(":/images/Normal.png"));

大胃 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiachm 的回复:]
楼主应该使用信号槽的方式来做
[/Quote]
能否来点具体的说明?需要用Release()信号来手动绘制点击抬起后的图标吗?
大胃 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 storylsl 的回复:]
按钮的信号用的clicked()吧,换成pressed()试试,这两个是有区别的
[/Quote]

我试了,一样的效果呀,没改变。
用哪个信号跟按钮样式怎么会有关系呢?
xiachm 2012-02-02
  • 打赏
  • 举报
回复
楼主应该使用信号槽的方式来做
jdwx 2012-02-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jdwx1 的回复:]

在UI编辑器里很容易办到,设置icon属性。
[/Quote]
设置button的icon属性。
jdwx 2012-02-02
  • 打赏
  • 举报
回复
在UI编辑器里很容易办到,设置icon属性。
我是学友 2012-02-02
  • 打赏
  • 举报
回复
按钮的信号用的clicked()吧,换成pressed()试试,这两个是有区别的
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...
代码下载地址: https://pan.quark.cn/s/72bd50ecb2fb 《微信飞机大战素材详解》 微信飞机大战作为一款广受欢迎的休闲游戏,凭借其便捷的操作方式和紧张刺激的游戏过程,赢得了众多用户的青睐。本文将系统性地剖析这款游戏的关键素材,旨在帮助开发者全面掌握游戏的设计理念与实现方法。 我们聚焦于游戏的核心构成——"AirplaneResource"。此名称一般指向游戏资源库,其中收纳了游戏中所有的视觉素材、音频资料以及动画元素。在微信飞机大战的语境下,这些资源构成了游戏画面呈现、音效播放和动态效果的基础。 1. **图像素材**:游戏中的飞机造型、敌方单位、弹药以及爆炸效果等视觉元素,均以图像素材的形式进行展示。图像素材通常涵盖PNG或JPG格式的静态图片,也包括GIF或APNG格式的动态图片。开发者需要细致地设计并优化这些图像,确保在各种设备上都能实现流畅的渲染,同时维持视觉表现力。 2. **声音素材**:游戏的背景音乐、射击音效、爆炸声等音频片段,对于构建游戏氛围具有决定性作用。这些音频文件可能以MP3、WAV或OGG格式进行存储,开发者需要权衡音频的压缩程度与音质,以确保在不牺牲游戏体验的前提下,有效控制文件体积。 3. **动画序列**:飞机的飞行轨迹、攻击动作、爆炸过程等动态表现,通常借助序列帧动画技术实现。这些序列帧图片组合而成的动画,通过编程控制播放速率和顺序,为游戏增添生动的动态效果。 4. **物理接触判定**:游戏中飞机与弹药之间的接触判定,是通过算法完成的。开发者可能会采用基础的矩形接触判定或更精密的像素级接触判定,以保证游戏的公平性和挑战性。 5. **游戏规则**:微信飞机大战的得分机制、生命值系统、敌机生成逻辑等...

21,502

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧