gtk2Hs : 带有文本和图片的组合框
gtk2Hs : Combo box with text and pictures
Gtk提供的基本ComboBox
只能处理一个String
或者一个Pixbuf
但我想要文本和图片位于同一行的附近。
我研究了一段时间如何使用 Haskell 和 Gtk2Hs 获得下面的结果。
这是获得预期结果的代码:
pic1 <- pixbufNewFromFile "Picture_1.png"
pic2 <- pixbufNewFromFile "Picture_2.png"
pic3 <- pixbufNewFromFile "Picture_3.png"
let lstsecrep = [
("Picture 1",pic1)
, ("Picture 2",pic2)
, ("Picture 3",pic3)
]
lststorerep <- listStoreNew lstsecrep
customStoreSetColumn lststorerep (makeColumnIdString 0) fst
customStoreSetColumn lststorerep (makeColumnIdPixbuf 1) snd
combo <- comboBoxNewWithModel lststorerep
rendertxt <- cellRendererTextNew
renderpic <- cellRendererPixbufNew
cellLayoutPackStart combo rendertxt False
cellLayoutPackStart combo renderpic True
cellLayoutAddColumnAttribute combo rendertxt cellText $ makeColumnIdString 0
cellLayoutAddColumnAttribute combo renderpic cellPixbuf $ makeColumnIdPixbuf 1
此致。
Gtk提供的基本ComboBox
只能处理一个String
或者一个Pixbuf
但我想要文本和图片位于同一行的附近。
我研究了一段时间如何使用 Haskell 和 Gtk2Hs 获得下面的结果。
这是获得预期结果的代码:
pic1 <- pixbufNewFromFile "Picture_1.png"
pic2 <- pixbufNewFromFile "Picture_2.png"
pic3 <- pixbufNewFromFile "Picture_3.png"
let lstsecrep = [
("Picture 1",pic1)
, ("Picture 2",pic2)
, ("Picture 3",pic3)
]
lststorerep <- listStoreNew lstsecrep
customStoreSetColumn lststorerep (makeColumnIdString 0) fst
customStoreSetColumn lststorerep (makeColumnIdPixbuf 1) snd
combo <- comboBoxNewWithModel lststorerep
rendertxt <- cellRendererTextNew
renderpic <- cellRendererPixbufNew
cellLayoutPackStart combo rendertxt False
cellLayoutPackStart combo renderpic True
cellLayoutAddColumnAttribute combo rendertxt cellText $ makeColumnIdString 0
cellLayoutAddColumnAttribute combo renderpic cellPixbuf $ makeColumnIdPixbuf 1
此致。