真心求教,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我吧
...全文
184 18 打赏 收藏 转发到动态 举报
写回复
用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,211

社区成员

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

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