欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > QML项目实战:自定义TextField

QML项目实战:自定义TextField

2025/1/3 3:21:44 来源:https://blog.csdn.net/qq_48597462/article/details/143566146  浏览:    关键词:QML项目实战:自定义TextField

目录

一.添加模块

import QtQuick.Controls 1.2

import QtQuick.Controls.Styles 1.4

import QtGraphicalEffects 1.15

二.自定义TextField

1.属性设置

2.输入框设置

3.按钮开关

三.效果

1.readonly为false

2.readonly为true

四.代码


一.添加模块

import QtQuick.Controls 1.2

作用: 引入Qt Quick Controls模块,提供了一组常见的UI控件(如按钮、文本框等),用于快速开发现代用户界面。

性质: 这个模块包含了许多预定义的控件和样式,可以大大简化UI开发。版本号1.2表示你正在使用该模块的第1.2版。

import QtQuick.Controls.Styles 1.4

作用: 引入Qt Quick Controls Styles模块,这个模块扩展了Qt Quick Controls模块,提供了一些额外的样式和主题支持。

性质: 通过这个模块,你可以为你的应用程序应用不同的样式和主题,从而改变控件的外观。版本号1.4表示你正在使用该模块的第1.4版。

import QtGraphicalEffects 1.15

作用: 引入Qt Graphical Effects模块,提供了一组图形效果类,用于为UI元素添加视觉效果,如阴影、模糊、渐变等。

性质: 这个模块允许你在应用程序中实现复杂的视觉效果,提升用户体验。版本号1.15表示你正在使用该模块的第1.15版。

二.自定义TextField

1.属性设置

1.activeFocusOnPress :当用户点击 TextField 时,自动将焦点设置到该控件上。

2.antialiasing:启用抗锯齿功能,使文本显示更加平滑。 

3.readOnly: 将 TextField 设置为只读模式,用户无法编辑内容。 

4.placeholderText:设置占位符文本。

2.输入框设置

1.设置了文本的字体、大小和颜色

2.根据 readOnly 属性动态改变占位符文本的颜色

3.使用 Rectangle 作为背景,并根据 focus 属性动态改变边框颜色

4.添加了阴影效果,使背景看起来更有层次感

3.按钮开关

负责开关TextField的readonly属性

三.效果

1.readonly为false

2.readonly为true

四.代码

import QtQuick 2.5
import QtQuick.Window 2.2
import QtQuick.Controls         1.2
import QtQuick.Controls.Styles  1.4
import QtGraphicalEffects       1.15Window {visible: truewidth: 640height: 480title: qsTr("TextField")TextField {id:           rootwidth:        450height:       70anchors.centerIn: parentactiveFocusOnPress: trueantialiasing:       truereadOnly: trueplaceholderText: root.readOnly ? "现在是只读状态!" : "请输入内容..."style: TextFieldStyle {id:             tfsfont.pixelSize: 30font.family:    "微软雅黑"placeholderTextColor: root.readOnly ? "#50596b" : "black"renderType:    Text.QtRenderingbackground: Item {id: backgroundItemRectangle {id:_Rectangleanchors.fill:           parentborder.color:           root.focus ? "#2850FF" : "white"border.width:           2radius:                 20color:                  "#4ceaf1fb"layer.enabled:          truelayer.effect: DropShadow {verticalOffset: 4radius: 8samples: 10color: "#4d000f43"}}}}}Button{text: "按钮"width: 120height: 40anchors.top: root.bottomanchors.topMargin: 30anchors.horizontalCenter: parent.horizontalCenteronClicked: {root.readOnly = !root.readOnlyconsole.log(root.readOnly)}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com