IT评测·应用市场-qidao123.com
标题:
Qt 界面表面
[打印本页]
作者:
万万哇
时间:
2025-1-12 23:35
标题:
Qt 界面表面
一、前言
1、
一个完善的应用程序,不但应该有实用的功能,还要有一个漂亮的表面,这样才能使应用程序更加友爱,更加吸引用户。
2、
作为一个跨平台的UI开辟框架,Qt提供了强大而灵活的界面表面设计机制。
3、
本篇会讲解:
(1)、Qt风格QStyle[了解]。
(2)、调色板QPalette[了解]。
(3)、Qt样式表Qt Style Sheets。
(4)、不规则窗体和透明窗体的实现方法。
二、Qt风格QStyle[了解]
1、
QStyle类是一个抽象基类,Qt中的各种风格类都继承自QStyle。
2、
Qt内置的风格类(QStyle子类),模拟Qt支持的差异平台的样式,封装了一个GUI的表面,Qt的内建部件使用QStyle子类来实行几乎所有的绘制工作,以确保它们看起来像各个平台上的本地部件一样。
3、
QStyleFactory类,通过keys()函数获取可用的风格字符串,通过create()函数创建一个QStyle对象。
4、
一般windows风格和fusion风格默认可用,而有些风格只在特定平台上才有效,如windowsxp风格、windowsvista风格、gtk风格和macintosh风格。
5、
用Qt Designer打开.ui文件,可以用以下方式,预览界面。
Visual Studio:窗体–>预览于–>XX风格。
Qt Creator: 工具–>Form Editor–>
review in–>XX风格。
6、
应用程序想使用差异的风格运行,可以调用QApplication的setStyle()函数来指定风格对象。
7、
代码:
#include "mainwindow.h"
#include <QApplication>
#include <QStyleFactory>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStringList styleStrList = QStyleFactory::keys();
qDebug() << styleStrList; //输出可用的风格字符串,如("windowsvista", "Windows", "Fusion")
//设置应用程序的风格
QApplication::setStyle(QStyleFactory::create("windowsvista"));
MainWindow w;
w.show();
return a.exec();
}
复制代码
8、
单个部件,可以调用部件的setStyle()函数指定该部件的风格。
如:ui->progressBar->setStyle(QStyleFactory::create(“windows”));
9、
自定义风格类:略。
三、调色板QPalette[了解]
1、
调色板QPalette类包含了部件各种状态的颜色组,管理着部件所有颜色信息。
2、
Qt中所有部件都包含一个调色板,而且使用各自的调色板来绘制它们自身。
3、
QPalette类有两个基本概念,一个是ColorGroup,另一个是ColorRole。
4、
一个调色板有三种状态颜色组ColorGroup,激活(Active)、非激活(Inactive)和失效(Disabled)。
(1)、激活颜色组(QPalette::Active):用于得到键盘焦点的窗口。
(2)、非激活颜色组(QPalette::Inactive): 用于别的没有得到键盘焦点的窗口。
(3)、失效颜色组(QPalette:
isabled): 用于因为一些原因而不可用的部件(设置Disabled)。
5、
调色板的颜色脚色,用来指定该颜色所起的作用,重要的颜色脚色ColorRole有:
(1)、QPalette::Window 一般的背景颜色。
(2)、QPalette::WindowText 一般的前景颜色。
(3)、QPalette::Base 重要作为输入部件(如QLineEdit)的背景色,也可用作QComboBox的下拉列表的背景色,或者QToolBar的手柄颜色,一般是白色或别的浅色。
(4)、QPalette::AlternateBase 在瓜代行颜色的视图中作为瓜代背景色。
(5)、QPalette::ToolTipBase 作为QToolTip和QWhatsThis的背景色。
(6)、QPalette::ToolTipText 作为QToolTip和QWhatsThis的前景色。
(7)、QPalette::Button 按钮部件背景色。
(8)、QPalette::ButtonText 按钮部件前景色。
(9)、QPalette::BrightText 一种与深色对比度较大的文本颜色,一般用于当Text或者WindowText的对比度较差时。
6、
应用程序更改调色板:
(1)、调用QApplication::palette()函数获取其调色板。
(2)、调色板更改。
(3)、调用QApplication::setPalette()函数使用该调色板。
7、
一个部件更改调色板:
(1)、调用部件的palette()函数获取其调色板。
(2)、调色板更改。
(3)、调用部件的setPalette()函数使用该调色板。
8、
留意,
(1)、更改部件的调色板只会影响该部件及其子部件,更改应用程序的调色板会影响到该程序的所有窗口部件。(继承关系)
(2)、.ui上的部件,可以在属性编辑器中修改palette属性,来更改调色板。(可以预览效果,也可以看到颜色脚色对应哪里)
9、
重要函数:
void QPalette::setColor ( ColorRole role, const QColor & color ); //所有颜色组的颜色脚色role,都设置为color。
void QPalette::setColor ( ColorGroup group, ColorRole role, const QColor & color ); //给定颜色组group,给定颜色脚色role,设置为color。
void QPalette::setBrush (QPalette::ColorRole role, const QBrush & brush);
void QPalette::setBrush (QPalette::ColorGroup group, QPalette::ColorRole role, const QBrush & brush);
10、
代码:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
//获取pushButton的调色板
QPalette palette1 = ui->pushButton->palette();
//设置按钮文本颜色为红色
palette1.setColor(QPalette::ButtonText, Qt::red);
//设置按钮背景色为绿色
palette1.setColor(QPalette::Button, Qt::green);
//pushButton使用修改后的调色板
ui->pushButton->setPalette(palette1);
//设置spinBox不可用
ui->spinBox->setDisabled(true);
QPalette palette2 = ui->spinBox->palette();
//设置spinBox不可用时的背景颜色为蓝色
palette2.setColor(QPalette::Disabled, QPalette::Base, Qt::blue);
ui->spinBox->setPalette(palette2);
复制代码
}
三、Qt样式表
详情见"Qt 样式表.txt"。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4