There is a way, but it requires some work… The library I like to use for drag & drop (vuedraggable) is actually just a wrapper for Sortable.js to make it work with vue.js. You could simply use Sortable.js (or something similar) and make it work with vue.js in your own way. <q-table ... id="myTable" > import Sortable from "sortablejs"; mounted() { const element = document.querySelector("#myTable tbody"); // grab the element containing the <tr> elements const sortable = Sortable.create(element, { onEnd(event) { // gets called when dragging ended // Sortable.js only swaps the elements in the DOM, // so we need to swap the elements in the table data using the indexes (event.oldIndex and event.newIndex) or probably better by using ids if you have pagination } }); } And then you also need to somehow notify Sortable.js when your data changes (after sorting, on pagination, etc.). I don’t see an update() or refresh() function in the documentation, so you might have to call destroy() and re-initialize Sortable again every time, but idk. … something like that.