首页 > 其他分享 >造型

造型

时间:2023-08-27 18:34:02浏览次数:29  
标签:const qt 样式 造型 部件 样式表 属性

使用 NodeGui,您可以根据需要设置小部件的样式。如果您熟悉网络世界中的CSS,您会感到宾至如归。所有小部件都有一个为相应小部件设置内联样式的方法。样式名称和值通常与 CSS 在 Web 上的工作方式相匹配。setInlineStyle

下面是一个示例:

const { QLabel, QMainWindow } = require("@nodegui/nodegui");

const win = new QMainWindow();

const label = new QLabel(win);
label.setText("Hello world");
label.setInlineStyle("color: green; background-color: white;");

win.show();
global.win = win;

概述

NodeGui利用Qt的样式表进行样式设计。Qt样式表的术语和语法规则几乎与HTML CSS相同。此外,NodeGui 还增加了对使用 flex 属性(如对齐项、对齐内容等)布局的支持。Flexbox布局支持是使用Facebook的瑜伽库添加的

您可以将样式属性写入字符串,并通过全局样式或内联样式(类似于它在 Web 中的工作方式)将其传递给 NodeGui 小部件。

全局样式

让我们看一个例子:

const { QLabel, FlexLayout, QWidget } = require("@nodegui/nodegui");

const view = new QWidget();
view.setObjectName("rootView");
view.setLayout(new FlexLayout());

const label = new QLabel();
label.setObjectName("helloLabel");
label.setText("Hello");

const label2 = new QLabel();
label2.setObjectName("worldLabel");
label2.setText("World");

view.layout.addWidget(label);
view.layout.addWidget(label2);

view.setStyleSheet(`
  #helloLabel {
    color: red;
    padding: 10px;
  }
  #worldLabel {
    color: green;
    padding: 10px;
  }
  #rootView {
    background-color: black;
  }
`);
view.show();
(global as any).view = view;

对于全局样式表,您可以在样式表字符串中定义所有样式属性,并告诉根视图或窗口将其设置为其及其子小部件的样式表。这里与 web 的唯一区别是,您可以在整个小部件树中的任何级别上设置样式表,样式表将影响小部件及其子项。

在上面的例子中,为了引用样式表中的小部件,我们将使用 setObjectName 实例方法为其分配一个。将 objectName 视为类似于 web 的情况。现在使用 objectName,您可以在样式表中引用小部件并在其上设置样式属性。不要担心这里正在发生的布局问题,这将在下一节中介绍。objectNameid

当您使用伪选择器(悬停、选中等)之类的东西时,全局样式表确实变得强大。它还有助于实现级联样式,允许您一次设置一组小部件的样式。我们将在下面看到有关这些功能的更多信息。

有关所有功能和语法的更多详细信息,请参阅:https://doc.qt.io/qt-5/stylesheet-syntax.html

内联样式

让我们再看一下这个例子:

const { QLabel, QMainWindow } = require("@nodegui/nodegui");

const win = new QMainWindow();

const label = new QLabel(win);
label.setText("Hello world");
label.setInlineStyle("color: green; background-color: white;");

win.show();
global.win = win;

在大多数情况下,内联样式小部件会更容易。NodeGui 支持使用实例方法进行内联样式。内联样式只会影响应用样式的小部件,并且通常更易于理解和管理。在全局样式表中使用的所有属性也都以内联样式提供。setInlineStyle

选择

NodeGui 样式表支持 CSS2 中定义的所有选择器。 一些例子包括:

* {
  color: blue;
}

QPushButton {
  padding: 10px;
}

#okButton {
  margin: 10px;
}

#mainView > QPushButton {
  margin: 10px;
}

要查看选择器的完整列表,请参阅此处:https://doc.qt.io/qt-5/stylesheet-syntax.html#selector-types

伪状态

就像在 Web 中一样,您可以根据小部件的状态设置其样式。例如,您可能希望按钮文本在悬停时的颜色为红色。这些对于伪状态是可能的。伪状态出现在选择器的末尾,带有冒号 (:)介于两者之间。

#okButton:hover {
  color: red;
}

级 联

可以在父小部件和子小部件上设置样式表。任意小部件的有效样式表是通过合并小部件的祖先(父项、祖父项等)上设置的样式表来获得的。

当发生冲突时,无论冲突规则的特殊性如何,小部件自己的内联样式表始终优先于任何继承的样式表。同样,父小部件的样式表优先于祖项的样式表等。

这种行为类似于我们在网络上看到的行为。

有关更深入的示例,请参阅此处:https://doc.qt.io/qt-5/stylesheet-syntax.html#cascading

性能

NodeGui 样式表是一个 css 字符串。

例如:

const textStyle = `
  color: 'green';
  padding: 12;
  height: '100%';
`;

在这里,如果你仔细观察,你会发现我们编写样式属性的方式与 web 相比存在一些差异。 你在周围看到的引号是必要的,这样Qt就不会将它们解释为数字。 因此,经验法则是,任何基于整数的属性(如边距、边框等)都可以在没有引号的情况下编写,而任何字符串属性最好用引号将它们括起来。PS:Qt确实可以识别一些没有引号的基于字符串的属性。'green''100%'

支持的属性

由于我们不是在 Web 浏览器中运行的,因此您可以在 NodeGui 中使用的属性与在 Web 中使用的属性几乎没有区别。

完整列表详见:https://doc.qt.io/qt-5/stylesheet-reference.html#list-of-properties

除了链接中列出的属性外,NodeGui 还支持与 Flex 相关的布局属性。您可以在所有小部件上使用所有 flex 属性,例如对齐项目、两端对齐内容、flex 等。布局样式将在布局部分中更详细地转换。

高级用法(设置 QObject 属性)

在Qt中,每个小部件都使用称为Q_PROPERTY的东西设置了某些属性。每个小部件上已经定义了许多 q 属性。您也可以自己在本机C++代码中定义自定义 qproperties。它与造型有什么关系?问题是其中一些属性可以使用qt样式表进行更改。在Qt的术语中,这些属性被称为可设计属性。

例如:

MyLabel {
  qproperty-alignment: AlignCenter;
}
MyGroupBox {
  qproperty-titlecolor: rgb(100, 200, 100);
}
QPushButton {
  qproperty-iconsize: 20px 20px;
}

您可以通过遵循Qt的文档或运行简单的Google搜索来发现这些属性,例如“使用Qt中的样式表在QLabel中居中文本”。这些是高级属性,在实践中很少使用,但很高兴知道。

更多详情 : https://doc.qt.io/qt-5/stylesheet-syntax.html#setting-qobject-properties


在本节中,我们主要介绍了 NodeGui 样式表中的绘制属性。下一节将介绍如何使用 flex 通过样式表布局小部件。

标签:const,qt,样式,造型,部件,样式表,属性
From: https://www.cnblogs.com/full-stack-linux-new/p/17660647.html

相关文章

  • 【3D机甲】捏造型功能
    (文章目录)3D机甲捏造型功能通常包括以下小功能:模型选择:通过从库中选择机甲模型或导入自定义模型来开始设计。变形和调整:调整机甲的大小、比例、旋转和位置,以适应特定场景或体验。材质和纹理:为机甲选择不同的材质和纹理,以改变外观和视觉效果。部件修改:通过添加、删除......
  • 浪莎袜业2023年代言人官宣,郎朗吉娜造型亮眼!
    郎朗自2023年2月开启全球巡演以来,全球各地售罄消息络绎不绝,情人节当天,在纽约无线电城音乐大厅带来了《郎朗的迪士尼》专场音乐会,值得一提的是,此次演出也是纽约无线电音乐大厅首次举办古典钢琴专场音乐会,音乐厅6000余位座无虚席。而作为东北媳妇的吉娜是本季《浪姐4》节目中年纪最......
  • 【3D建模工具】上海道宁与McNeel为您提供强大的专业3D造型软件
     Rhino可以对NURBS曲线、曲面、实体、细分几何图形(SubD)、点云和多边形网格进行创建、编辑、分析、记录、渲染、动画制作与转换 只要硬件条件允许不受复杂度、阶数与尺寸大小的限制  Rhino7使用SubD工具可以建立有机形状使用Rhino.Inside.Revit做......
  • 电玩设计无孔不入:摇杆造型、可发声的电灯开关
    喜欢电玩的朋友可以关注一下,近期有厂商开发出一款游戏摇杆造型开关,售价为29.99美元,使用在房间的电路控制中。也就是说,这款开关将传统“按下”的操作方式,改为了类似游戏操作中摇杆的“拨动”方式,另外当你打开房间的灯管后,如果按下旁边的红色按钮,还会有“皮尤皮尤皮尤(拟声)”的声音发......
  • 制造型企业选择ERP管理系统,这四个关键点太重要了!
    制造型企业物料品种多,产品结构复杂,随着市场和客户需求的变化,计划、采购和生产模式也都随之不断变化,需要考虑的因素多,不可控的因素更多。需要进行大量的行业化研究开发,这势......
  • 中式古典镂空门窗窗柩屏风隔断造型PS/SAI2笔刷procreate画笔刷素材
    下载......
  • 【Raspberry Pi / 树莓派】这个 IoT Gateway 的造型有点奇特呢?
    IoTGateway 是由 EDATEC 基于 RaspberryPi ComputeModule设计的物联网网关,支持CM3+/CM3/CM1全系列产品,它提供了丰富的无线通信接口,包括WiFi,蓝牙,4G模块(可......
  • 由小见大!不规则造型按钮解决方案
    今天,有个群友在群里提问,使用CSS能否实现下述这个图形:emmm,中间这个酷似三次贝塞尔曲线的造型,使用CSS不太好实现。我的建议是切图实现,然而群友要求一定要用CSS实现。......
  • SPINE精品男神帅哥 古代 现代造型 2D动画师精品素材待机源文件 58套
    SPINE精品男神帅哥古代现代造型2D动画师精品素材待机源文件58套文件大小:203MB文件格式:.json、.atlas、.spine、Gif、PNG文件数量:58组 ......
  • 制造型企业上 MES 系统的原因是什么?
    制造型企业上MES系统的根本原因就是制造业企业的核心工作是生产制造,而MES本身就是一套面向制造企业车间执行层的生产信息化管理系统,即制造执行系统,为工厂生产管理服务的。......