Como remover o GtkTreeView classificação seta?
Pergunta
Eu preciso remover a seta de classificação de um cabeçalho de coluna. Isso pode ser feito chamando set_sort_indicator(false)
na coluna.
A seta não é apresentada, mas o espaço para ele parece ainda ser reservados. Se o título da coluna é grande o suficiente para preencher todo o cabeçalho, a última parte é cortada (onde a seta deve ser).
Existe uma maneira de fazer o título preencher o cabeçalho completo?
Solução
Este parece ser um pouco estranho em GTK +. I baixado e ler partes relevantes do código do GtkTreeViewColumn, e parece usar esta lógica:
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);
Onde arrow
é o widget segurando a seta. Isto parece indicar que a seta widget é sempre embalado em caixa horizontal que compõe cabeçalho da coluna e, em seguida, apenas oculto (não removido) se não é suposto ser visível. Isso significa que ele ainda está lá na caixa, ocupando espaço e fazendo com que o rótulo a ser cortada.
Eu recomendo a pesquisa através do GTK + bugtracker para um questão sobre isso, e se nada for encontrado, criar um.
Outras dicas
Ok, então eu tenho apresentou um relatório de bug para gtk. Eles disseram que não é um problema e não vai ser corrigido.
Eu olhei em outros kits de ferramentas gráficas (janelas, qt) e sua implementação é diferente, mas isso não parece importar para os caras da equipe de gtk.
Ok, você pode usar o método set_clickable
à coluna você não quer que ele tenha uma seta ??strong>
em seguida, usar signal_connect
ao sinal clicked
e vinculá-lo a um Função que usará get_sort_column_id
para obter a ordem de classificação atual, em seguida, se candidatar a ordem de classificação inversa usando set_sort_column_id
.