• 21903阅读
  • 20回复

【推荐】关于QPushButton的问题【已解决】 [复制链接]

上一主题 下一主题
离线stdjgwyc
 
只看楼主 倒序阅读 楼主  发表于: 2008-12-22
— 本帖被 XChinux 设置为精华(2008-12-23) —
我用setStyleSheet为一个QPushButton贴了一个背景图片

但是,当点了按钮之后,会出现虚线框~~~  这样看起来就很丑,不逼真了,我不希望这个虚线框出现,
有什么好的解决方法吗?
————————————————————————————
这一组按钮(6个按钮,垂直排列),实现如下效果以及解决方案:
程序启动后按钮的形状:

__________________________
当鼠标指向按钮时的形状:

__________________________
当选中了按钮时的形状:


实现效果的代码:
ui.colorButton->setFocusPolicy(Qt::NoFocus);//设置无聚焦~避免出现虚线框~
//需要注意的是,尝试过CSS语法 border-style:none不能满足对应的要求。
//border-image为程序启动后默认的背景
//pressed为按下后的图片
//hover为鼠标指向时的按钮图片
//当然,还有选中后的图片~这个就自行处理了
ui.colorButton->setStyleSheet("QPushButton {border-image:url(pic/border-image.jpg); font-size:24px;} \
  QPushButton:hover:pressed {border-image:url(pic/pressed.jpg);font-size:24px;} \
  QPushButton:hover:!pressed {border-image:url(pic/hover.jpg);font-size:24px;} ");

[ 此贴被stdjgwyc在2008-12-22 20:46重新编辑 ]
QT交流群群号:2906359,(200人大群,持续升级)
离线stdjgwyc
只看该作者 1楼 发表于: 2008-12-22
已解决,谢谢~~
ui.colorButton->setFocusPolicy(Qt::NoFocus);
即可。
QT交流群群号:2906359,(200人大群,持续升级)
离线fantalin
只看该作者 2楼 发表于: 2008-12-22
背景图片怎么设置的呢。能不能贴下代码
离线mumutouv

只看该作者 3楼 发表于: 2008-12-22
通过sheet来做,建议看这方面trolltech资料
离线lazybone
只看该作者 4楼 发表于: 2008-12-22
背景图片:
pushbutton.setStyleSheet("border-image: url(a.png);");
离线fantalin
只看该作者 5楼 发表于: 2008-12-22
背景图片:
pushbutton.setStyleSheet("border-image: url(a.png);");

a.png 的路径是什么呢,
什么样的图片都可以吗?
离线fantalin
只看该作者 6楼 发表于: 2008-12-22
搞清楚了,谢谢:)
离线fantalin
只看该作者 7楼 发表于: 2008-12-22
不好意思,再问一下,如何使背景图片显示在widget中固定的位置呢
离线songxizg

只看该作者 8楼 发表于: 2008-12-22
重载widget
离线stdjgwyc
只看该作者 9楼 发表于: 2008-12-22
引用第7楼fantalin于2008-12-22 13:46发表的  :
不好意思,再问一下,如何使背景图片显示在widget中固定的位置呢

没明白意思~~ 有些支持,有些不支持
参看Qt style reference资料~
QT交流群群号:2906359,(200人大群,持续升级)
离线stdjgwyc
只看该作者 10楼 发表于: 2008-12-22
代码和解决方法已贴上。 Nofocus很重要,不然太丑陋了~

如果大家有更好的方法,请不吝文笔,贴出来吧,大家一起分享~~~~~
QT交流群群号:2906359,(200人大群,持续升级)
离线lazybone
只看该作者 11楼 发表于: 2008-12-23
楼主的总结分享精神非常好 提出表扬 =。=
离线wvins
只看该作者 12楼 发表于: 2008-12-23
漂亮,
捧场
离线stdjgwyc
只看该作者 13楼 发表于: 2008-12-23
QT DEMO虽然资源比较少,但是的确非常精~~~ 时不时地反复看demo,总有意想不到的收获的
QT交流群群号:2906359,(200人大群,持续升级)
离线michael20

只看该作者 14楼 发表于: 2010-02-11
不错~支持一下
离线2nd090215
只看该作者 15楼 发表于: 2010-02-18
关注,
离线ortejia

只看该作者 16楼 发表于: 2010-05-29
setFocusPolicy(Qt::NoFocus);在我的代码里没用啊,还是有虚线框,我是在板子上运行的

    Color = "color:rgb(255,255,255);";
    highLightColor = "color:rgb(255,170,0);";
    styleSheetStr  = "text-align:left;font: bold 26pt;border:0px;";

    pTextCodingBt = new QPushButton(tr("Text Coding"));
    pTextCodingBt->setFixedSize(widthOfBt, heightOfBt);
    pTextCodingBt->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
    pTextCodingBt->setAttribute(Qt::WA_TranslucentBackground);
    pTextCodingBt->setStyleSheet(styleSheetStr + Color);
    pTextCodingBt->setFocusPolicy(Qt::NoFocus);
离线taiji
只看该作者 17楼 发表于: 2010-06-12
这个帖子不错,很受益。
离线kerry_wei
只看该作者 18楼 发表于: 2010-06-23
请问下如何设置按钮选中后的图片,hover和pressed状态都已经设置成功,但是鼠标一移开,按钮图片就变成背景色了,选中状态如何设置呢?
离线lostc
只看该作者 19楼 发表于: 2010-12-27
此方法无效
离线chen.kline

只看该作者 20楼 发表于: 2011-04-09
高手,我也试验了一下,在windows平台确实很好
但是在wince平台qt 4.7.2运行时,图片根本就不显示出来,没有效果
不知道为什么,郁闷
小小蝼蚁
http://weibo.com/chenkline
快速回复
限100 字节
 
上一个 下一个