怎样在Qt设计师中更改控件颜色控件

Qt如何设置界面风格? - 知乎18被浏览5078分享邀请回答QStyleFactory::keys()
---------------------------好了,上面是你可能存在的,对 Qt 内置风格的误解,接下来,如何更改风格呢? 你列出的代码已经很接近了:QApplication::setStyle(QStyleFactory::create(styleName)); // styleName 就是上图所列
QApplication::setPalette(QApplication::style()-&standardPalette()); // 选择风格默认颜色
后一句话也蛮重要的,每一个风格都有自己的颜色,如果不设置默认颜色,可能会选择当前系统的颜色,那样,的确有点难以区分各个风格的特色。完整的例子:一些截图:参考资料: (对其进行简化)91 条评论分享收藏感谢收起qt-project.org/doc/qt-5/qstyle.htmlmacintosh应该只在OS X下有效...1添加评论分享收藏感谢收起Qt设计师里面的widget_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Qt设计师里面的widget
上传于|0|0|文档简介
&&控件图标
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩5页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢1133人阅读
转自:/xiaofan812/item/9a039d605b11
一般的属于QWidget子类的一些控件,可以直接使用样式表,例如
label-&setStyleSheet(&color:white&);
Qpalette类相当于对话框或是控件的调色板,它管理着控件或窗体的所有颜色信息,每个窗体或控件都包含一个QPalette对象,在显示时按照它的QPalette对象中对各部分各状态下的颜色的描述来进行绘制。就像油漆匠的油漆计划,当要刷墙时,到计划中去查一下墙需要刷成什么颜色。采用这种方式可以很方便地对窗体的各种颜色信息进行管理。
QPalette类有两个基本的概念,一个是ColorGroup,另一个是ColorRole。
ColorGroup指的是3中不同的状态,包括一下几种。QPalette::Active:获得焦点的状态。QPalette::Inactive:未获得焦点的状态。QPalette::Disable:不可用状态。通常情况下,Active状态与Inactive状态下颜色显示是一致的,当然也可根据需要设置成不一样的颜色
ColorRole指的是颜色主题,即对窗体中不同部位颜色的分类,如QPalette::Window是指背景色,QPalette::WindowText指的是前景色等。
QPalette::setColor()函数对某个主题的颜色及状态进行设置。
QPalette::setBrush()函数对显示进行更改,这样就有可能使用图片而不仅仅是单一的颜色来对主题进行填充了。
QPalette::setColor(ColorRole r,const Qcolor &c);对某个主题颜色进行设置,并不区分状态
QPalette::setColor(ColorGroup gr,ColorRole r,const QColor &c);对主题颜色进行设置的同时还区分了状态。
xxx-&setAutoFillBackground(true);
Qpalette&p=xxx-&palette();
p.setColor(QPalette::Window,color);//p.setBrush(QPalette::Window,brush);
xxx-&setPalette(p);
Qt之前版本中有关背景色设置的函数如setBackgroundColor()或是前景色设置的函数如setForegroundcolor()在Qt4中都被废止,统一由QPalette类进行管理。
注意要先调用setAutoFillBackground(true)设置窗体自动填充背景。如:
ui-&label-&setAutoFillBackground(true);&&& ui-&label-&setPalette(QColor(list.at(1).toInt(),list.at(2).toInt(),list.at(3).toInt(),list.at(4).toInt()));
ui-&label-&setPalette(Qt::blue);
QPalete::Window,通常指窗口部件的背景色;
&&QPalette:WindowText,通常指窗口不见的前景色;
&&QPalette::Base,指文本输入窗口部件(比如QtextEdit,QLinedit等)保利地产的背景色.//应该用这个的
&&QPalette::Text,与QPalette::Base一块使用,指文本输入窗口部件的盗梦空间前景色;
&&QPalette::Button,指按钮窗口部件的背景色;
&&QPalette::ButtonText,指按钮窗口部件的前景色
一. 背景刷成黑色,前景色设为白色。 方法一、paltette方式,经测试,该方法不会影响到其他控件,推荐使用&
QPalette&bgpal = palette();
bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));
//bgpal.setColor (QPalette::Background, Qt::transparent);
bgpal.setColor (QPalette::Foreground, QColor&
(255,255,255,255)); setPalette (bgpal);
方法二、stylesheet方式 影响子控件的方法是:
setStyleSheet (&background-color: #000000;color: #&);
不影响子控件的方法是:
setStyleSheet (&venus--TitleBar {background-color:&
#000000;color: #}&);
二. 圆角控件 用stylesheet方式
setStyleSheet (&border:2px groove&
border-radius:10padding:2px 4&);
三. 圆角窗口 RoundRectWin::RoundRectWin() {&QPalette&p = palette();&
QPixmap img(&roundrect.png&);
QBitmap mask(&roundrect_mask.png&);
p.setBrush(QPalette::Window, QBrush(img));
setPalette(p);
setMask(mask);
resize(img.size());
//setWindowFlags(Qt::FramelessWindowHint);//这句会去掉标题栏 }&
注意:mask的图多余部分设为白色
四. 半透明窗口
1.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。QPalette&pal =&
palette();
pal.setColor(QPalette::Background,&
QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果:
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明; 窗体客户区完全透明。
另外从网上看到的方法: setAttribute(Qt::WA_TranslucentBackground, true);&
试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
2.窗口及其上面的控件都半透明:
setWindowOpacity(0.7)
试验效果:窗口及控件都半透明。注意不能够setWindowFlags(Qt::FramelessWindowHint);要不就不起作用
3.窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
void TestWindow::paintEvent( QPaintEvent* )
{ QPainter p(this);
&p.setCompositionMode(&
QPainter::CompositionMode_Clear ); p.fillRect( 10, 10, 300,&
300, Qt::SolidPattern ); }
试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。
以上实验均是基于Directfb的Qte测试。在Linux下及Windows下效果会略有不同。&
比如在Windows下第3个实验,绘制区域就是一个黑窟窿,如果Window本身半透,则是Window下面的内容加上半透效果,不是全透明效果。
五. 控制QPixmap的alpha
QPixmap temp(pixmapTop.size()); temp.fill(Qt::transparent);
QPainter p(&temp);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawPixmap(0, 0, pixmapTop);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(temp.rect(), QColor(0, 0, 0, alpha));&
//--lable显示前景图片 ui-&label-&setScaledContents(true);
ui-&label-&setPixmap(temp);
六. layout 的边界 layout-&setMargin (0);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:57497次
排名:千里之外
转载:79篇
(2)(1)(13)(1)(11)(1)(13)(5)(1)(14)(7)(15)君,已阅读到文档的结尾了呢~~
最新qt的按钮怎么变颜色
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
最新qt的按钮怎么变颜色
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 qt 设计师自定义控件 的文章

 

随机推荐