Когда вы используете ComboBoxEntry
, вам нужно явно указать текстовый столбец. Теоретически вы должны быть в состоянии звонить comboBoxEntrySetTextColumn
, однако я не мог сделать эту работу. Хотя я смог сделать следующее:
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Gdk.EventM
import Graphics.UI.Gtk.Gdk.GC
import Control.Monad
main = do
initGUI
window <- windowNew
window `onDestroy` mainQuit
windowSetDefaultSize window 800 600
windowSetPosition window WinPosCenter
combo <- comboBoxEntryNewText
store <- comboBoxEntrySetModelText combo
mapM_ (listStoreAppend store) ["one", "two"]
containerAdd window combo
widgetShowAll window
mainGUI
Разница в том, что когда ComboBoxEntry создается из comboBoxEntryNewText
, он уже настроен на использование ListStore String
с соответствующим текстовым столбцом. У него также есть средство рендеринга, так что вам также не нужно его устанавливать. Один большой недостаток заключается в том, что он также устанавливает хранилище моделей, поэтому, если вы намеревались использовать хранилище, совместно используемое с другим виджетом, вам необходимо создать его здесь.
Я подозреваю, что comboBoxEntrySetModelText
имеет неправильное имя, похоже, это должно быть "getModelText".