Hey @Daniel_Gilpatrick, welcome to the forum!
Yes, you can build this with a Canvas button and a Visibility Condition.
AbleSet exposes whatever is queued through /setlist/queuedName, and /setlist/clearQueuedJump cancels it, so the button only needs those two.
1. Copy this and paste it into your Canvas:
[{"type":"button","buttonType":"osc","textColor":{"type":"preset","color":"white"},"backgroundColor":{"type":"preset","color":"red"},"label":"Cancel ${osc(\"/setlist/queuedName\", \"all\")?.filter(Boolean).join(\" › \") ?? \"\"}","font":{"size":40},"width":400,"height":150,"x":390,"y":330,"zIndex":10,"onPress":"/setlist/clearQueuedJump"}]
It’s an OSC button that runs this on press:
/setlist/clearQueuedJump
The label also shows what’s queued, so you know what you’re about to cancel:
Cancel ${osc("/setlist/queuedName", "all")?.filter(Boolean).join(" › ") ?? ""}
2. Add the Visibility Condition
With the button selected, open the Visibility Condition section in the sidebar and paste:
${!!osc("/global/isPlaying") && !!osc("/setlist/queuedName")}
The button is only shown while Live is playing and a song or section is queued. As soon as the jump happens or you cancel it, the queue clears and the button disappears again.
While editing, hidden elements are shown slightly transparent (you can toggle this with the Ghost button), so you can still move the button around when nothing is queued.
Side note: pressing C on your keyboard also cancels the queued jump in AbleSet.
You can also see more about visibility conditions in action in the official tutorial: https://youtu.be/v3xrJA71wf4?t=541
Would that work for your use case?