怎么设置QPushButton样式表

怎么设置QPushButton样式表,第1张

QT中使用setStyleSheet()设置空间的样式表是很常用也很方便的方式。使用方法如下

工具/原料

QT开发工具

方法/步骤

首先要定义一个QPushButton对象

QPushButton button = new QPushButton();

设置button的字体类型、字体大小和字体颜色代码如下:

button->setStyleSheet"QPushButton{ font-family:'Microsoft YaHei'font-size:12pxcolor:#666666}")

设置button的状态图片:正常、鼠标移入、鼠标点击状态的图片切换。代码如下:

button->setStyleSheet( "QPushButton{border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_normal.png)}" "QPushButton:hover{border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_hover.png)}" "QPushButton:pressed{border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_pressed.png)}");

也可以同时设置这两种属性:

button->setStyleSheet( "QPushButton{font-family:'Microsoft YaHei'font-size:12pxcolor:#666666}”

border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_normal.png)}" "QPushButton:hover{border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_hover.png)}" "QPushButton:pressed{border-image: url(Resources/images/BreadCrumbNavigation/navigation_more_pressed.png)}");

最近看到很多项目界面设计的很有个性,突破qt的原先风格。

才知道button和label可以自由设计形状。

举例:如何改变qt的button规则呢

Qt中有两种方法来实现不规则形状的窗口

可以设置QWidget的窗口属性Qt::WA_TranslucentBackground为true来实现。但是利用这个属性有很大的限制。在window平台下,你必须设置Qt::FramelessWindowHint属性为true,设置窗口为一个没有标题栏的窗口。在X11平台下,你还要依靠 a compositing window manager.局限很多 。

利用setMask()函数来实现, void QWidget::setMask ( const QRegion &region ) 可以使得仅和region重叠的区域可见。但是,如果这个区域包括widget的rect()以外的像素,窗口控制的这个区域可见不可见,将取决于具体的平台。 所以,如果获得这个不规则的区域,然后在resizeEvent函数中调用这个函数,就可以获得一个不规则的形状的窗口。

qt的帮助文档上写到:

QPixmap pixmapLeft(":/MainWindow/Resources/Images/TestLeft.png")

ui.btnLeft->setMask(pixmapLeft.mask())

QPixmap pixmapRight(":/MainWindow/Resources/Images/TestRight.png")

ui.btnRight->setMask(pixmapRight.mask())

QLabel topLevelLabel

QPixmap pixmap(":/images/tux.png")

topLevelLabel.setPixmap(pixmap)

topLevelLabel.setMask(pixmap.mask())

先通过pix的方法获得图片的过滤掉透明的部分得到的图片,作为button和label的不规则边框。

所以只需要在ps里画一个含有透明部分的图片,保存成png格式,然后用它来setMask你的按钮和文本标签。

最后软件运行后,按钮效果,只有不透明的地方,才有点击效果。透明的地方看不到按钮。

你就是要做一个漂亮的自定义按键么?平时是按键普通的样子,按住鼠标是按键按下的样子,松开鼠标又恢复到普通的样子的那种感觉么?我原来嫌QT自带的按键太丑自己写过一个图片那样的按键

上面那个是普通状态的按键,下面那个是按下去时的样子,再抬起鼠标左键就会恢复到普通状态(就是按键按下d起的那种感觉)

你重新写一下QPushbutton的MousePressEvent和MouseReleaseEvent就好了,在鼠标按下的时候setIcon换成你自己找的那个按下的图像,鼠标抬起(release)时再Set成普通的就行了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11235336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存