You need coordinates for the callout lines to appear. So you could use
$y to add the original coordinates of the feature to their attribute tables and use these coordinates for data defined override of the label position. So if you move the feature later, the label will stay in place.
In order for the callout line to go from the original position of the feature to the new one, you need to create a rule which is always true (just leave the expression empty) which labels the feature with a single blank space. An empty label wont be displayed, but the space will be. For this labeling rule, enable callout lines and set the label placement to the
x/y columns in the attribute table.
Create a second labeling rule with your actual label.
- You're adding more features later on and want to add their coordinates to the attribute table, too. In this case you'll have to use
if("x-column" IS NULL,$x,"x-column") in order to not to overwrite existing values. Provided, you didn't set
$x/$x as your standard values for newly created features.
- You're using lines or polygons. In this case you need to decide where you want the label to be displayed, e.g. at the centroid, or in the middle of the line.