真心求教,button 设置图像问题

tt2com 2011-12-02 09:42:39

void Icon_memory::on_pushButton_released()
{

QImage * image = new QImage(tr("Sunset.jpg"));
QSize s = ui.pushButton->size();//the button you would to set the back;
QImage * i2 =new QImage(image->scaled(s));//adapt the size of button;
QIcon iocn_ = QIcon(QPixmap::fromImage(*i2));
1) ui.pushButton->setIcon(iocn_);
ui.pushButton->setIconSize(s);

delete i2;
delete image;

}

void Icon_memory::on_pushButton_pressed()
{



QImage * image = new QImage(tr("Winter.jpg"));
QSize s = ui.pushButton->size();//the button you would to set the back;
QImage * i2 =new QImage(image->scaled(s));//adapt the size of button;
QIcon iocn_ = QIcon(QPixmap::fromImage(*i2));
1) ui.pushButton->setIcon(iocn_);
ui.pushButton->setIconSize(s);

delete i2;
delete image;

}



上述代码我删掉 1)在任务管理器上面看 内测不会增加,加上1) 任务管理器 上每次的button被按下和释放 内测都要增加一些。 这个问题1个月了 哪位大神出来99 我啊 我是真心求教啊 为啥子没人理啊???

有人提供解决的思路和办法 我马上加分 大神出来99我吧
...全文
187 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
tt2com 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yiyaaixuexi 的回复:]

虽然 delete i2; 也 delete image;了,但是icon的确作为一个属性被你加在button上了,看setIcon源码是最能解决你问题的办法了。
[/Quote]
我一开始就想用继承类来改掉这个属性,但后来发现是private的 就没辙了
tt2com 2011-12-03
  • 打赏
  • 举报
回复
我已经加分 非常感谢各位
tt2com 2011-12-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 xiachm 的回复:]

引用 11 楼 tt2com 的回复:

引用 9 楼 wangxkww 的回复:

border-image 就是自适应大小的, background-image不能自适应大小

恩可以起作用,但我现在还是想知道我上面为什么内存漏了。
现在这个button有二种方法来做,一个是用qss 一个是重新封装QLabel 响应 鼠标的event

非常感谢楼上提供的帮助,我想问下 q……
[/Quote]
非常在赞同 “与其说是让你学一种技术,到不如说是让你学会一种工作方法”
我大多时候都习惯一种工作方式,我应该尝试更多,那样也许能取得更好的效果。
念茜 2011-12-03
  • 打赏
  • 举报
回复
虽然 delete i2; 也 delete image;了,但是icon的确作为一个属性被你加在button上了,看setIcon源码是最能解决你问题的办法了。
tt2com 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qingqing_benniu 的回复:]

为什么卜用QPalette呢

例如:
p_button->setAutoFillBackground(true);
QPixmap pixmap(p_button.backGraph);【p_button.backGraph背景图片路径】
QPalette palette;
palette.setBrush(p_button->backgroundRole(),QBrush(pix……
[/Quote]
我试试看
tt2com 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangxkww 的回复:]

为什么不试试给按钮设置stylesheet?
[/Quote]
我不会QSS 或者说我对CSS一点概念没有
wangxkww 2011-12-02
  • 打赏
  • 举报
回复
为什么不试试给按钮设置stylesheet?
qingqing_benniu 2011-12-02
  • 打赏
  • 举报
回复
为什么卜用QPalette呢

例如:
p_button->setAutoFillBackground(true);
QPixmap pixmap(p_button.backGraph);【p_button.backGraph背景图片路径】
QPalette palette;
palette.setBrush(p_button->backgroundRole(),QBrush(pixmap));
p_button->setPalette(palette);

【 我也是初学者 卜知道你想要的是怎样的效果 只是说啦一下个人见解 呵呵.. 希望可以帮到你..】
tt2com 2011-12-02
  • 打赏
  • 举报
回复
没人可以帮一下嘛?
xiachm 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 tt2com 的回复:]

引用 9 楼 wangxkww 的回复:

border-image 就是自适应大小的, background-image不能自适应大小

恩可以起作用,但我现在还是想知道我上面为什么内存漏了。
现在这个button有二种方法来做,一个是用qss 一个是重新封装QLabel 响应 鼠标的event

非常感谢楼上提供的帮助,我想问下 qassistant 还有没有系统介绍QSS的书……
[/Quote]
如果你身边有美工,而且做过一些网站设计,可以让他教你。

倡导使用CSS(QSS),与其说是让你学一种技术,到不如说是让你学会一种工作方法。

最理想的过程是:UI设计之初,你和美工可以商讨出最基本的UI元素和布局,并用Qt Designer简单画出,同时给各个控件起好名字。然后你就可以去开发程序的逻辑了。美工会帮你把UI渲染的代码写好。最后一合并,一个漂亮的程序就出来了。

我们在实际的工作中应用过这种模式,非常有效。美工的学习成本也很低,开发人员也省了很多事。
tlmyj666888 2011-12-02
  • 打赏
  • 举报
回复
>>>>非常感谢楼上提供的帮助,我想问下 qassistant 还有没有系统介绍QSS的书籍?


《C++ GUI Programming with Qt 4》书中有一点介绍QSS的,但是不多,建议楼主看一些CSS的书,个人感觉两个东西还是挺像的
tt2com 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangxkww 的回复:]

border-image 就是自适应大小的, background-image不能自适应大小
[/Quote]
恩可以起作用,但我现在还是想知道我上面为什么内存漏了。
现在这个button有二种方法来做,一个是用qss 一个是重新封装QLabel 响应 鼠标的event

非常感谢楼上提供的帮助,我想问下 qassistant 还有没有系统介绍QSS的书籍?
qingqing_benniu 2011-12-02
  • 打赏
  • 举报
回复
p_button->setStyleSheet(("border-image:url(图片路径);");
wangxkww 2011-12-02
  • 打赏
  • 举报
回复
border-image 就是自适应大小的, background-image不能自适应大小
tt2com 2011-12-02
  • 打赏
  • 举报
回复
qss如何将控制背景图片的大小.使得背景图片能够自适应控件的大小 qss语句如何实现?
xiachm 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangxkww 的回复:]

呃 既然用Qt了 慢慢可以了解一下stylesheet的 感觉qss还是很好用的 楼主的意思是要让按钮点击时和释放时显示不同的图片

ui->pushButton->setStyleSheet(" \
QPushButton{\
bord……
[/Quote]

支持,楼上!

加一句,应该把图片放到资源文件里。这样它们会和你的程序一同发布。

这些都可以在ui设计器里直接完成,把以下代码粘贴到pushButton的styleSheet属性上:
QPushButton
{
border-image: url(:/Sunset.jpg);
}
QPushButton:pressed
{
border-image: url(:/Winter.jpg);
}

注意冒号,它说明使用资源中的图片。
wangxkww 2011-12-02
  • 打赏
  • 举报
回复
呃 既然用Qt了 慢慢可以了解一下stylesheet的 感觉qss还是很好用的 楼主的意思是要让按钮点击时和释放时显示不同的图片

ui->pushButton->setStyleSheet(" \
QPushButton{\
border-image:url(Sunset.jpg);\
}\
QPushButton:pressed {\
border-image:url(Winter.jpg);\
}");

16,819

社区成员

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

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