fix: IPv6 地址错位 + 复制按钮颜色不明显

接口信息区改为三行对称结构:行1 接口名居中,行2/行3 为 IPv4/IPv6
地址行,用固定宽度标签对齐,两行结构对称不再随地址长度错位;
复制图标默认色从 tertiaryText 改为 primaryText,深色背景上清晰可见
This commit is contained in:
2026-08-08 21:10:29 +08:00
parent 45fd39407f
commit 28829c2ab7
+74 -41
View File
@@ -132,7 +132,8 @@ Control {
}
// ==================== 分区1:接口信息 ====================
// 类型图标 + 接口名 + IPv4 一行,IPv6 截断显示一行
// 三行对称结构:行1 接口名(居中),行2 IPv4 地址行,行3 IPv6 地址行
// 地址行用固定宽度标签 + 地址 + 复制图标,两行结构对称不会错位
// 外层 Item 固定高度 + 内层 ColumnLayout anchors.centerIn:
// 无 IP 地址时内容在区域内垂直居中,避免单行内容贴顶导致网卡名偏上
Item {
@@ -147,9 +148,7 @@ Control {
width: parent.width
spacing: 4
// 行1:类型图标 + 接口名 + · + IPv4
// 拆分为独立 Text 元素,使接口名用 primaryText 跟随用户 textColor,
// 图标和 IPv4 保持系统主题色(tertiaryText/secondaryText),层次分明
// 行1:类型图标 + 接口名(居中)
RowLayout {
Layout.alignment: Qt.AlignHCenter
spacing: 4
@@ -167,61 +166,94 @@ Control {
font.pixelSize: Math.round(13 * popup.fontScale)
color: popup.primaryText
}
}
// IPv4 地址 + 分隔点 + 复制图标
RowLayout {
spacing: 4
visible: popup.ipAddress !== ""
// 行2:IPv4 标签 + 地址 + 复制图标
// 与行3 结构对称:标签固定宽度左对齐,地址左对齐,复制图标在右
RowLayout {
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 320
spacing: 6
visible: popup.ipAddress !== ""
Text {
text: "·"
font.pixelSize: Math.round(13 * popup.fontScale)
color: popup.tertiaryText
// IPv4 标签:固定宽度,与 IPv6 标签列对齐
Text {
text: qsTr("IPv4")
font.pixelSize: Math.round(12 * popup.fontScale)
color: popup.tertiaryText
Layout.preferredWidth: 32
horizontalAlignment: Text.AlignLeft
}
// IPv4 地址:超长截断 + hover tooltip
Text {
text: popup.ipAddress
font.pixelSize: Math.round(13 * popup.fontScale)
color: popup.secondaryText
elide: Text.ElideRight
Layout.fillWidth: true
horizontalAlignment: Text.AlignLeft
ToolTip.text: popup.ipAddress
ToolTip.visible: ipv4Mouse.containsMouse && popup.ipAddress !== ""
ToolTip.delay: 300
MouseArea {
id: ipv4Mouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.IBeamCursor
}
}
Text {
text: popup.ipAddress
font.pixelSize: Math.round(13 * popup.fontScale)
color: popup.secondaryText
}
// 一键复制图标:点击复制 IPv4 到剪贴板,复制后短暂显示 ✓
// 默认态用 primaryText 保证深色背景上清晰可见,hover 变蓝
Text {
text: popup.copiedField === "ipv4" ? "✓" : "⧉"
font.pixelSize: Math.round(12 * popup.fontScale)
color: popup.copiedField === "ipv4"
? popup.accentGreen
: (ipv4CopyMouse.containsMouse ? popup.accentBlue : popup.primaryText)
// 一键复制图标:点击复制 IPv4 到剪贴板,复制后短暂显示 ✓
Text {
text: popup.copiedField === "ipv4" ? "✓" : "⧉"
font.pixelSize: Math.round(11 * popup.fontScale)
color: popup.copiedField === "ipv4"
? popup.accentGreen
: (ipv4CopyMouse.containsMouse ? popup.accentBlue : popup.tertiaryText)
MouseArea {
id: ipv4CopyMouse
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
popup.copyToClipboard(popup.ipAddress)
popup.copiedField = "ipv4"
copyFeedbackTimer.restart()
}
MouseArea {
id: ipv4CopyMouse
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
hoverEnabled: true
onClicked: {
popup.copyToClipboard(popup.ipAddress)
popup.copiedField = "ipv4"
copyFeedbackTimer.restart()
}
}
}
}
// 行2:IPv6 地址 + 复制图标(超长截断 + hover tooltip 显示完整地址)
// 行3:IPv6 标签 + 地址 + 复制图标
// 与行2 结构对称:标签固定宽度左对齐,地址左对齐,复制图标在右
RowLayout {
Layout.alignment: Qt.AlignHCenter
Layout.maximumWidth: 320
spacing: 4
spacing: 6
visible: popup.ipv6Address !== ""
// IPv6 标签:固定宽度,与 IPv4 标签列对齐
Text {
text: qsTr("IPv6: ") + popup.ipv6Address
text: qsTr("IPv6")
font.pixelSize: Math.round(12 * popup.fontScale)
color: popup.tertiaryText
Layout.preferredWidth: 32
horizontalAlignment: Text.AlignLeft
}
// IPv6 地址:超长截断 + hover tooltip 显示完整地址
Text {
text: popup.ipv6Address
font.pixelSize: Math.round(12 * popup.fontScale)
color: popup.tertiaryText
elide: Text.ElideRight
Layout.fillWidth: true
horizontalAlignment: Text.AlignRight
horizontalAlignment: Text.AlignLeft
ToolTip.text: popup.ipv6Address
ToolTip.visible: ipv6Mouse.containsMouse && popup.ipv6Address !== ""
@@ -236,12 +268,13 @@ Control {
}
// 一键复制图标:点击复制 IPv6 到剪贴板,复制后短暂显示 ✓
// 默认态用 primaryText 保证深色背景上清晰可见,hover 变蓝
Text {
text: popup.copiedField === "ipv6" ? "✓" : "⧉"
font.pixelSize: Math.round(11 * popup.fontScale)
font.pixelSize: Math.round(12 * popup.fontScale)
color: popup.copiedField === "ipv6"
? popup.accentGreen
: (ipv6CopyMouse.containsMouse ? popup.accentBlue : popup.tertiaryText)
: (ipv6CopyMouse.containsMouse ? popup.accentBlue : popup.primaryText)
MouseArea {
id: ipv6CopyMouse