Qt如何设置界面风格

作者&投稿:危南 (若有异议请与网页底部的电邮联系)
Qt如何设置界面风格~

设置方法:
每个widget都可以设置风格
setStyle(QStyle style)
对QApplication设置QStyle即对所有
QApplication::setStyle(QStyleFactory::create("Fusion"));
其他widget如过没有被设置QStyle,默认使用QApplication的
QStyle主要可重写接口
绘制复杂控件
virtual void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, QPainter * painter, const QWidget * widget = 0) const = 0
绘制一般控件
virtual void drawControl(ControlElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const = 0
绘制最基础的控件(小箭头什么的)
virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option, QPainter * painter, const QWidget * widget = 0) const = 0
所有这些接口的参数都类似
第一个为QStyle类中定义的枚举值,具体参考Qt文档,表示你要修改的控件类型
后面几个顾名思义好了
获得当前平台支持的原有的QStyle

也可以对每个widget定制风格
QWidget::setStyle()
修改自定义widget的显示效果
QWidget有style()接口获得当前QStyle

自定义QStyle
可以重写已有的QStyle稍微修改下
也可以继承一个,一般继承于QProxyStyle,或者QCommonStyle
将自定义的style做成插件供其他人使用
Qt style sheet qss的使用
使用.qss 文件
如果一个Qt style sheet被激活,则它会对widget的style进行封装
这是一个类似css的东西
子widget也会被修改
可以对整个app应用一个样式,然后对某个控件指定某个样式
这是一个优先级别最高的样式配置,会覆盖QStyle,或者说包装QStyle
QStyle和qss的区别
QStyle是可以重写画控件的,你可以重新设置画刷画线,当然也你可以只是设置背景颜色。例如,checkbox,原来是打钩的,现在改成深色
qss 改的相对表面一点,修改背景颜色 背景图片什么的
一个改骨头一个改皮
可在QtDesigner里更改样式表

Qt改变界面文字有很多方法(下面以Label控件为例):
1.通过Qt Creater:
拖一个Label到窗体上,对着Label右键->改变多信息文本...,里面就可以修改Label的内容、颜色、字体样式等等。
2.通过代码:
QLabel *label = new QLabel("Hello World!"); //新建一个显示"Hello World"的Label//使用setPalette()方法改变颜色QPalette pt;pt.setColor(QPalette::WindowText, Qt::red); //设置为红色label->setPalette(pt); //使用setFont()方法改变字体样式QFont font("Microsoft YaHei", 12,75); //设置为微软雅黑,字体12号,加粗/*常见权重(第三个参数):QFont::Light - 25 高亮QFont::Normal - 50 正常QFont::DemiBold - 63 半粗体QFont::Bold - 75 粗体QFont::Black - 87 黑体*/ label->setFont(font); //使用样式表改变颜色label->setStyleSheet("color:blue;"); //设置为蓝色 //使用简单的HTML样式改变颜色和样式QLabel *label2 = new QLabel("Hello" "World!")参考资料:CSDN 《C++ GUI Qt 4编程》

设置方法:

类的继承关系:

QMotifStyle:OSF(开放基金协会)开发的一个工业标准的GUI(图形用户接口);

QCDEStyle:公共桌面环境(Common Desktop Environment)的缩写,CDE是一种运行于UNIX/AIX,基于Motif部件工具箱开发的桌面环境,惠普的OpenVMS、IBM的AIX等都采用CDE作为标准的桌面环境;

QS60Style:Series 60(简称S60)界面是诺基亚Symbian系统智能手机界面;

QGtkStyle:GTK+(GIMP Toolkit)是一套源码以LGPL许可协议分发、跨平台的图形工具包,GNOME、XFCE等桌面环境和大部分窗口管理器都基于GTK+;

QMacStyle:苹果操作系统的界面风格;

QPlastiqueStyle:KDE桌面环境的界面风格;

QWindowsXPStyle和QWindowVistaStyle:分别是Windows XP和Windows Vista操作系统的界面风格;

示例:

在main函数中添加:

QApplication::setStyle(new QMotifStyle);



如何用 Qt 做出酷炫的界面
答:4 this->on_btnMenu_Max_clicked();5 return true;6 } 7 return QObject::eventFilter(obj, event);8 } 9 10 void frmMain::mouseMoveEvent(QMouseEvent *e)11 { 12 if (mousePressed && (e->buttons() && Qt::LeftButton) && !max) { 13 this->move(e->globalPo...

qtdesigner4怎么把界面设置成中文
答:1、首先打开Qtcreator的translations文件夹,把其中一个文件拷贝,designer_zh_CN.qm是简体中文,designer_zh_TW.qm是繁体中文,拷贝简体中文的翻译文件。2、其次将拷贝的翻译文件复制到PyQt5的translations文件夹中,将拷贝的翻译文件复制到pyqt5-tools的translations文件夹中。3、最后打开PyQt5的designer就会...

Qt 中设置窗体透明度的几种方法
答:效果:窗口整体透明,但窗口控件不透明,QLabel控件只是字显示,控件背景色透明;窗体客户区完全透明。2、使用函数setAttribute(Qt::WA_TranslucentBackground, true);同样在构造函数中,效果和第一种方法相同。3、窗口及其上面的控件都半透明:setWindowOpacity(0.7)这个函数可以分10个等级调整透明度,配合Q...

Qt如何设置窗口屏幕居中显示以及设置大小
答:首先我们在界面中添加一个QLabel控件。QT界面怎么使控件随窗口大小变化一直居中显示 在控件上边下边分别添加一个竖直的弹簧,选中这三个控件,然后点击竖直布局,如下图所示。布局结果如右图。QT界面怎么使控件随窗口大小变化一直居中显示 QT界面怎么使控件随窗口大小变化一直居中显示 3 然后在上次布局的两侧...

关于Qt界面的设计(界面衔接)一般做法
答:但是使用这个类以后就把相同的信号给封装成不同信号发射了。注意那个connect函数里面的mapped信号的QString参数,不同的button的clicked信号是相同的,但是text是不同的,这样相同的信号就能区分出不同的需求了。画龙点睛到此,不必细细去说,相信你该知道怎么办了。不知道还可以问我。

基于Qt设计的ui界面中,若在ui界面的属性设置调色板的颜色运行后恢复为默...
答:不知道你解决了这个问题没,我也遇到了这个问题 我查看了html里的代码 估计你也是运行了更新歌词,或者更新标签内容的东西。你开始对标签里的字体设置,只是在当前文字的盒子里进行的设置。即使你对标签的全局设置一个字体颜色,但当程序调用你的刷新内容函数后,字体也会变成最早的颜色 要解决这个问题,...

怎样给QT窗体添加背景,还有按钮怎么添加图片?
答:先添加一个资源文件,然后在你代码的文件夹下面放一张你要添加的背景图片,将其添加到资源文件中,将根目录设置为:/,然后执行代码:QIcon images= new QIcon(“:/1.png”);QPushButton *button = new QButton(QIcon(images));

qt 中怎样做出这个界面呢?这是什么控件呢?
答:整个应该可以用qlistwidget,最上面的那个Buttons是将button加到list一行中 下需的都是图片加文字,就不说了

windows下qt如何更方便的编辑图形界面
答:安装Qt的sdk VS就可以选择创建Qt的Dialog了 直接就可以用designer!

用QT开发Metro 风格的UI
答:这样 你的QT-metrostyle ui 在QML中用对应的widget设计出来 (PS: 底层实现是原生的 OpenGL 经过面向平台的自动转译 OpenGL的调用被置换为等效的DX11 ) 就可以在支持DX11的平台上高效运行了。这里有用QML 模拟出部分metro风格的例子:https://blog.qt.digia.com/blog/2012/01/25/how-to-...