输入框控件

输入框控件

UIGQLineEdit 是 WidgetKit 的单行文本输入控件,用于搜索框、表单输入、密码输入、快捷键输入和参数编辑。

输入框控件支持按状态配置背景和文字样式,支持 placeholder 文本样式,支持密码模式和快捷键录入模式。

常见状态

  • 默认状态(Normal)
  • 鼠标悬停状态(Hot)
  • 获得焦点状态(Pressed)
  • 禁用状态(Disable)

C++ 使用

UIGQLineEdit* edit = new UIGQLineEdit(parent);
edit->setObjectName("searchEdit");
edit->setThemeName(UIG_THEME_LINE_EDIT);
edit->setText("");
edit->setPlaceholderText("搜索");
edit->setEditMargin(8, 8, 12, 12);

密码输入:

edit->setIsPassword(true);

快捷键输入:

edit->setHotkeyMode(true);

快捷键模式下,用户按下 CtrlAltShift 与字母组合时,控件会把组合键写入文本;按 DeleteBackspace 会清空文本。

类继承关系

QWidget
  └─ QLineEdit
      └─ UIGQLineEdit

IUIGQWidgetBase
  └─ UIGQLineEdit

UIGQLineEdit 同时继承 Qt 的 QLineEdit 和 WidgetKit 的 IUIGQWidgetBase。因此它既可以使用 Qt 标准输入框能力,例如 setText(...)textChanged 信号、setEchoMode(...),也可以使用 WidgetKit 的主题、布局和 JSON 序列化能力。

内部实现上,每个 UIGQLineEdit 持有一个 UIGQWidgetBase 基础控制对象和一个 UIGQLineEditImpl 绘制实现对象:

类型 作用
QLineEdit Qt 标准单行输入框基类,提供文本输入、光标、选择、焦点和输入事件。
IUIGQWidgetBase WidgetKit 控件统一接口,提供主题名、布局策略、JSON 读写等能力。
UIGQWidgetBase 控件通用数据对象,保存布局、主题、透明度等基础属性。
UIGQLineEditImpl 输入框专用实现,负责背景、文字、placeholder、密码模式、快捷键模式和属性读写。

控件接口说明

构造

接口 说明 参数 返回值
UIGQLineEdit(QWidget* parent = nullptr) 创建单行输入控件。 parent:父控件,可为空。 控件实例

主题和序列化

接口 说明 参数 返回值
void setThemeName(const QString& themeName) 设置主题名。常用值为 UIG_THEME_LINE_EDIT themeName:主题配置名称。 void
QString getThemeName() const 获取当前主题名。 QString
bool readJsonValue(void* value) 从配置对象读取控件属性。通常由页面加载或设计器调用。 value:指向配置对象。 bool
bool serializeJsonValue(Json::Value* value, bool bRead = true) 读写控件可序列化属性。 value:配置对象;bRead:是否读取。 bool
QString jsonData() const 获取设计器属性字符串。 QString
void setJsonData(const QString& data) 设置设计器属性字符串,并在首次设置时读取配置。 data:属性字符串。 void

背景和状态样式

接口 说明 参数 返回值
void setBackground(CtrlState state, const FillStyle& style) 设置某个状态的背景样式。state 可传 UIG_NORMALUIG_HOTUIG_PRESSEDUIG_DISABLE state:控件状态;style:背景填充样式。 void
const FillStyle& getBackground(CtrlState state) 获取某个状态的背景样式。 state:控件状态。 const FillStyle&
void setTextStyle(CtrlState state, const TextStyleDesc& style) 设置某个状态的输入文字样式。设置 UIG_NORMAL 时会立即应用字体和颜色。 state:控件状态;style:文字样式描述。 void
const TextStyleDesc& getTextStyle(CtrlState state) 获取某个状态的输入文字样式。 state:控件状态。 const TextStyleDesc&
void setPlaceholderTextStyle(CtrlState state, const TextStyleDesc& style) 设置 placeholder 文本样式。当前实现使用一份 placeholder 样式,state 参数用于保持接口一致。 state:控件状态;style:placeholder 文字样式。 void
const TextStyleDesc& getPlaceholderTextStyle(CtrlState state) 获取 placeholder 文本样式。 state:控件状态。 const TextStyleDesc&

文本和输入模式

接口 说明 参数 返回值
void setText(const QString& text) Qt 标准接口,设置输入框文本。 text:输入框文本。 void
QString text() const Qt 标准接口,获取输入框文本。 QString
void setPlaceholderText(const QString& text) 设置 placeholder 文本。WidgetKit 自绘 placeholder,不依赖 Qt 原生 placeholder 绘制。 text:placeholder 文本。 void
const QString& getPlaceholderText() 获取 placeholder 文本。 const QString&
void setIsPassword(bool password) 设置密码模式。启用后会禁用右键菜单,并使用 QLineEdit::Password 回显模式。 password:是否启用密码模式。 void
bool getIsPassword() 获取是否为密码模式。 bool
void setHotkeyMode(bool hotkeyMode) 设置快捷键录入模式。 hotkeyMode:是否启用快捷键录入。 void
bool getHotkeyMode() 获取是否为快捷键录入模式。 bool
void setEditMargin(int top, int bottom, int left, int right) 设置输入内容边距。 top/bottom/left/right:内容边距。 void
void getEditMargin(int& top, int& bottom, int& left, int& right) 获取输入内容边距。 top/bottom/left/right:输出内容边距。 void

WidgetKit 通用布局接口

接口 说明 参数 返回值
void setLayoutRatio(int ratio) 设置布局比例值。用于比例布局。 ratio:空间占比权重。 void
int getLayoutRatio() const 获取布局比例值。 int
void setWidthPolicy(LayoutSizePolicy policy) 设置宽度策略。常用值为 UIG_SIZE_AUTOUIG_SIZE_FILLUIG_SIZE_FIXED policy:宽度策略枚举。 void
LayoutSizePolicy getWidthPolicy() const 获取宽度策略。 LayoutSizePolicy
void setHeightPolicy(LayoutSizePolicy policy) 设置高度策略。 policy:高度策略枚举。 void
LayoutSizePolicy getHeightPolicy() const 获取高度策略。 LayoutSizePolicy
void setAbsoluteLayout(bool absoluteLayout) 设置是否使用绝对布局。 absoluteLayout:是否启用绝对布局。 void
bool getAbsoluteLayout() const 获取是否使用绝对布局。 bool
void setAbsoluteDock(DockLayoutType hor, DockLayoutType ver, int offsetX = 0, int offsetY = 0) 设置绝对停靠位置和偏移。 hor:水平停靠;ver:垂直停靠;offsetX/offsetY:偏移量。 void
void getAbsoluteDock(DockLayoutType& hor, DockLayoutType& ver, int& offsetX, int& offsetY) const 获取绝对停靠位置和偏移。 hor/ver/offsetX/offsetY:输出停靠与偏移。 void
void setOpacity(int alpha) 设置控件透明度,范围 0-255 alpha:透明度值。 void
int getOpacity() const 获取控件透明度。 int
void resizeWidget() 根据 WidgetKit 布局数据重新计算控件尺寸和位置。 void

常用信号

信号 说明 参数 返回值
void textChanged(const QString& text) Qt QLineEdit 标准信号,文本变化时触发。 text:变化后的文本。 void
void editingFinished() Qt QLineEdit 标准信号,编辑结束时触发。 void
void returnPressed() Qt QLineEdit 标准信号,按下回车时触发。 void

主题样式建议

输入框背景、边框、文字、placeholder 样式建议放到主题中维护。业务代码只负责设置文本、placeholder、密码模式、快捷键模式和边距。

使用建议

  • 表单输入框优先通过 setThemeName(UIG_THEME_LINE_EDIT) 绑定主题,不建议在页面代码里硬编码颜色。
  • 搜索框可以配合左侧搜索图标容器使用,输入框本身负责输入和 placeholder。
  • 密码模式会禁止复制、粘贴、全选等快捷操作,适合敏感输入。
  • 快捷键模式适合设置页中的热键录入,不适合作为普通文本输入框使用。