Μεταφορά κι απόθεση

Η Gtk::TreeView υλοποιεί ήδη απλή μεταφορά και απόθεση όταν χρησιμοποιείται με τα μοντέλα Gtk::ListStore ή Gtk::TreeStore. Αν είναι απαραίτητο, επιτρέπει επίσης την υλοποίηση πιο σύνθετης συμπεριφοράς όταν μεταφέρονται και αποτίθενται στοιχεία, χρησιμοποιώντας την κανονική API Μεταφορά και απόθεση.

9.6.1. Αναδιατάξιμες γραμμές

Αν καλέσετε τη Gtk::TreeView::set_reorderable(), τότε τα στοιχεία της προβολής δένδρου μπορούν να μετακινηθούν μέσα στην ίδια προβολή δένδρου. Αυτό δείχνεται στο παράδειγμα TreeStore.

Όμως, αυτό δεν επιτρέπει κανένα στοιχείο ελέγχου του οποίου τα στοιχεία μπορούν να μετακινηθούν και όπου μπορούν να αποτεθούν. Αν χρειάζεστε αυτόν τον πρόσθετο έλεγχο, τότε μπορείτε να δημιουργήσετε ένα παράγωγο Gtk::TreeModel από τα Gtk::TreeStore ή Gtk::ListStore και να αντικαταστήσετε τις εικονικές μεθόδους Gtk::TreeDragSource::row_draggable() και Gdk::TreeDragDest::row_drop_possible(). Μπορείτε να εξετάσετε τα παρεχόμενα Gtk::TreeModel::Paths και να επιτρέψετε ή να απορρίψετε τη μεταφορά ή απόθεση επιστρέφοντας true ή false.

Αυτό παρουσιάζεται στο παράδειγμα drag_and_drop.