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