链接控件 (SLink)¶
Warning
The current page still doesn't have a translation for this language.
You can read it through google translate.
链接控件提供了类似HTML链接的功能,可以在点击时触发特定操作或跳转到指定URL。
基本信息¶
- 类名:
SLink - 控件标签:
link - 基类:
SWindow - 功能:提供链接功能
属性说明¶
自身属性¶
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| href | string | - | 链接跳转 URL。由 ATTR_STRINGT 直接存入 m_strLinkUrl,鼠标左键释放时用 ShellExecute 打开;href 为空时退化为打开控件文本 |
href 与 tip 的关系
SLink::OnInitFinished() 中,若未显式设置 tip,控件会把 href 的值作为默认的悬浮提示文本。
命中区域
鼠标事件(按下/抬起/悬停/设置光标)都会先判断点是否落在文本矩形 m_rcText 内,落在文本之外不响应。
文本矩形由 align 决定(left/center/right),宽度等于文本实际宽度。
继承自
SWindow/SwndStyle/ 布局参数的通用属性,见通用属性。
使用示例¶
基本链接¶
<link pos="10,10,200,30"
name="link_basic"
href="https://github.com/SOUI2/soui"
colorText="#0000FF"
colorTextHover="#000088"
cursor="hand">
访问SOUI GitHub
</link>
带下划线的链接¶
<link pos="10,40,200,60"
name="link_underline"
href="https://soui.github.io"
colorText="#0000FF"
colorTextHover="#FF0000"
font="underline:1"
fontHover="underline:1,bold:1"
cursor="hand">
访问SOUI文档
</link>
自定义样式的链接¶
<link pos="10,70,200,90"
name="link_styled"
href="https://github.com"
colorText="#333333"
colorTextHover="#007ACC"
font="italic:1"
fontHover="underline:1,italic:1"
cursor="hand">
GitHub链接
</link>
事件处理¶
链接控件主要响应以下事件:
| 事件名 | EventID | 说明 |
|---|---|---|
| EVT_CMD | EventCmd::EventID | 命令事件(点击时触发) |
| EVT_MOUSE_HOVER | EventMouse::EventID | 鼠标悬停事件 |
| EVT_MOUSE_LEAVE | EventMouse::EventID | 鼠标离开事件 |
// 事件处理示例
EVENT_MAP_BEGIN()
EVENT_NAME_COMMAND(L"link_basic", OnLinkClick)
EVENT_MAP_END()
bool CMainDlg::OnLinkClick()
{
SLink *pLink = FindChildByName2<SLink>(L"link_basic");
SStringT strHref = pLink->GetHref();
// 处理链接点击,例如打开浏览器
ShellExecute(NULL, L"open", strHref, NULL, NULL, SW_SHOWNORMAL);
return true;
}
代码操作¶
// 查找链接控件
SLink *pLink = FindChildByName2<SLink>(L"link_basic");
// 设置链接地址
pLink->SetHref(L"https://new-url.com");
// 获取链接地址
SStringT strHref = pLink->GetHref();
// 设置链接文本
pLink->SetWindowText(L"新链接文本");
// 获取链接文本
SStringT strText = pLink->GetWindowText();
// 设置文本颜色
pLink->SetAttribute(L"colorText", L"#FF0000");
pLink->SetAttribute(L"colorTextHover", L"#00FF00");
最佳实践¶
- 视觉一致性:使用标准的链接颜色(如蓝色)和悬停效果
- 光标提示:设置
cursor为 "hand" 以提供明确的交互提示(见通用属性) - 下划线效果:通过
font属性添加下划线增强链接识别度 - URL验证:在处理链接点击时验证URL的有效性
常见问题¶
Q: 链接点击无反应怎么办?¶
A: 确保正确处理了 EVT_CMD 事件,并在事件处理函数中实现跳转逻辑。
Q: 鼠标悬停效果不明显怎么办?¶
A: 检查是否设置了 colorTextHover 和 fontHover 属性,并确认父链上的 hoverAware 为 true(见通用属性)。
Q: 链接文本显示不完整怎么办?¶
A: 确保控件宽度足够显示文本,或调整字体大小。
相关控件¶
- 按钮(SButton) - 基础交互控件
- 文本标签(SStatic) - 文本显示控件