Come rimuovere la freccia di ordinamento GtkTreeView?
Domanda
Ho bisogno di rimuovere la freccia di ordinamento da una colonna. Questo può essere fatto chiamando set_sort_indicator(false)
sulla colonna.
La freccia non viene visualizzato, ma lo spazio per esso sembra ancora essere riservati. Se il titolo della colonna è abbastanza grande per riempire tutto l'intestazione, l'ultima parte è ritagliato (dove la freccia dovrebbe essere).
C'è un modo per rendere il titolo riempire l'intera intestazione?
Soluzione
Questo sembra essere un po 'strano in GTK +. I scaricato e leggere parti rilevanti del codice del GtkTreeViewColumn, e sembra di usare questa logica:
if (tree_column->show_sort_indicator ||
(GTK_IS_TREE_SORTABLE (model) && tree_column->sort_column_id >= 0))
gtk_widget_show (arrow);
else
gtk_widget_hide (arrow);
Dove arrow
è il widget che detiene la freccia. Ciò sembra indicare che il widget freccia è sempre pieno nella scatola orizzontale che compone l'intestazione della colonna, e poi semplicemente nascosto (non rimosso) se non dovrebbe essere visibile. Che significa che sia ancora là nella scatola, che occupa spazio e causando l'etichetta per essere fermato.
Mi consiglia la ricerca attraverso il GTK + bugtracker per un problema su questo, e se non viene trovato, crearne uno.
Altri suggerimenti
Ok, così ho presentato un bug report a gtk. Hanno detto che non è un problema e non verrà risolto.
Ho guardato su altri toolkit grafici (finestre, qt) e la loro attuazione è diversa, ma questo non sembra avere importanza per i ragazzi del team gtk.
Ok è possibile utilizzare il metodo set_clickable
alla colonna non si desidera avere una freccia
quindi utilizzare signal_connect
al segnale clicked
e associarlo ad un Funzione che utilizzerà get_sort_column_id
per ottenere l'ordinamento corrente allora applicare l'ordinamento inverso usando set_sort_column_id
.