테이블에 표시 할 시간표가 있습니다. 여기 셀 단위로 클릭 이벤트에 반응하는 테이블
내 현재 솔루션의 샘플입니다 : 이제import Graphics.UI.Gtk
import Control.Monad.IO.Class
main = do
initGUI
window <- windowNew
view <- treeViewNew
store <- listStoreNew initialData
treeViewSetModel view store
containerAdd window view
prepareCols view store
window `on` deleteEvent $ liftIO mainQuit >> return False
widgetShowAll window
mainGUI
initialData :: [[String]]
initialData = [["foo", "bar"], ["baz", "42"]]
prepareCols :: TreeView -> ListStore [String] -> IO()
prepareCols view store = do
size <- listStoreGetSize store
mapM_ (addColumn view store) [0..size-1]
addColumn :: TreeView -> ListStore [String] -> Int -> IO()
addColumn view store i = addTextColumn view store (!! i) $ show i
addTextColumn :: (TreeViewClass view
, TreeModelClass (model row)
, TypedTreeModelClass model
)
=> view -> model row -> (row -> String) -> String -> IO()
addTextColumn view model f name = do
col <- treeViewColumnNew
rend <- cellRendererTextNew
treeViewColumnSetTitle col name
treeViewColumnPackStart col rend True
cellLayoutSetAttributes col rend model (\row -> [ cellText := f row ])
treeViewColumnSetExpand col True
treeViewAppendColumn view col
return()
내가 모든 세포를 마우스 오른쪽 클릭을하고 싶습니다,하지만 세포가 활성화 된 정보없이, 행 activable를 만들기 위해 제공 gtk2hs, 또는 열 헤더 클릭 할 수 있습니다.
정보가 포함 된 클릭 이벤트에 응답하는 테이블에 대해 클릭 한 행 및 열 (숫자 인덱스가 완벽 할 때이 인덱스를 사용할 수 있음)에 대해 gtk2hs로 이동하는 방법은 무엇입니까? Table
을 사용하고 런타임에 레이블을 삭제/추가하는 것과 같은 불쾌한 일에 의지하지 않고 시작한 목록 수정).
임 사용 gtk2hs (gtk3) 버전 0.12.5.6
누군가해야 아마도'onPathRightClick'을 적절한'Signal View (TreePath -> IO())'로 변형 할 것입니다.하지만 그렇게하기에는 라이브러리에 대해 충분히 알지 못합니다. – Cactus
시작한 목록을 수정하려면 어떤 열을 클릭했는지 정보가 필요합니다 (예에서 'initialData'). 불행히도'TreeViewColumn'은이 정보를 포함하지 않습니다. 그래서 나는 수정할 데이터를 알아낼 수 없다. – Kritzefitz
콜백에 전달하기 전에 열 색인을 찾는 내 대답을 편집했습니다. 당신이 할 수있는 또 다른 일은 (objectCreateAttribute'를 사용하여) 커스텀 속성을 당신이 필요한 컬럼 키를 포함하는'TreeViewColumn'에 붙이는 것입니다. 나는 그 일을 잘 해냈지만, 훨씬 더 배관이 필요합니다. – Cactus