https://tieba.baidu.com/p/7898918130
最近贴吧老是删我的回答贴


extends Control
var le = LineEdit.new()
var copy_text:String
func _enter_tree() -> void:
get_tree().connect("node_added",self,"add_node") #确保连接label信号
le.visible = false
add_child(le)
func add_node(node:Node):
if node.is_in_group("LabelGroup"):
(node as Label).mouse_filter = Control.MOUSE_FILTER_STOP #使label可以接收输入
(node as Label).connect("gui_input",self,"click_label",[node])#连接label gui的输入信号
func click_label(event:InputEvent,node:Label):
if event is InputEventMouseButton:
if event.doubleclick:
le.visible = true
le.text = node.text
le.rect_position = node.rect_position
le.rect_size = node.rect_size
le.rect_min_size = node.rect_min_size
le.rect_rotation = node.rect_rotation
le.grab_focus() #lineEdit获取焦点,这时可以直接ctrl+c复制
le.select_all() #lineEdit选择所有文本
copy_text = le.text
$Label4.text = "select " + copy_text
func _input(event: InputEvent) -> void:
if event is InputEventMouseButton:
if event.pressed:
if not le.get_global_rect().has_point(event.global_position):
le.visible = false #检查鼠标在lineEdit区域外单击时取消选中
if Input.is_action_just_pressed("ui_accept"):
le.visible = false
copy_text = le.text #检查按下回车后取消选择
$Label4.text = "select " + copy_text