2012-07-13 3 views
0

Gtk :: TreeView가있는 대화 상자 창이 있습니다. 이 다이얼로그는 주 파일 시스템 트리 을 보여 주며 디스크의 폴더를 선택하는 옵션을 제공합니다. 사용자가 폴더를 선택하면 해당 폴더를 나타내는 행에 Gtk :: Stock 이미지를 추가합니다. https://github.com/mc-suchecki/Imagine/blob/master/gui/dialogs.cpp#L47Gtk :: TreeStore에서 이미지를 삭제하는 깔끔한 방법

은 Gtk :: CellRendererPixbuf '를 번역 : 코드의이 비트에

//appending columns 
directory_tree.append_column("Folder List", dir_columns.name); 
Gtk::TreeViewColumn *column = directory_tree.get_column(0); 
if(column) column->set_expand(true); 
Gtk::CellRendererPixbuf *cell = Gtk::manage(new Gtk::CellRendererPixbuf); 
directory_tree.append_column("", *cell); 
column = directory_tree.get_column(1); 
if(column) column->add_attribute(cell->property_stock_id(), dir_columns.stock_id); 

링크 :

이렇게하려면, 내 나무의 마지막 컬럼과 연관된은 Gtk :: CellRendererPixbuf을 만들었습니다 'Gtk :: StockId가'dir_columns.stock_id ' 에있는 이미지를 트리에 있습니다.

//selecting folder 
(*folder)[fs_columns.stock_id] = Gtk::StockID(Gtk::Stock::FIND).get_string(); 
(*folder)[fs_columns.included] = true; 

모든 것이 괜찮습니다,하지만 난 이미지 이런 식으로 삭제하려고하면 : 나는 이미지를 추가 할 때 다음과 같이 행하기

//unselecting folder 
(*folder)[fs_columns.stock_id] = ""; 
(*folder)[fs_columns.included] = false; 
이미지가 제대로 사라

을하지만, 명령의 몇 가지 오류가있다 이 같은 라인 (내 응용 프로그램을 시작할 수있을 것입니다 때 정확한 메시지가, 내가 그것을 게시 할 예정되지 않음) :

경고의 이유는 분명하다 물론
(imagine:9376): Gtk-WARNING **: Gtk StockId not found 

(더 StockId 항목이 없다 빈 이름과 관련된), 그러나 내 질문은 : 어떤 Gtk 경고 생성하지 않을 Gtk :: TreeView 행에서 이미지를 삭제할 수있는 방법이 있습니까? 내가 폴더를 선택 해제

코드는 여기에 있습니다 : https://github.com/mc-suchecki/Imagine/blob/master/core/core.cpp#L207

내 영어 당신에게 매우 사전에 많이 미안 감사드립니다.

답변

1

stock-id 속성 대신 이미지를 없애려면 visible 속성을 false로 변경하십시오.

+0

고맙습니다! CellRendererPixbuf를 사용하여 각 셀의 가시성을 제어 할 수 있다는 것을 눈치 채지 못했습니다. 해결책은'(* 폴더) [fs_columns.stock_id] = "";'를 삭제하고 해당 코드 줄을 추가하는 것입니다 : https://github.com/mc-suchecki/Imagine/blob/master/gui/dialogs. cpp # L56 (행복하게 이미지의 가시성을 나타내는 bool 값을 가진 열이 있음). –