<table>-подобный элемент пользовательского интерфейса для wxHaskell/wxWidgets

Я работаю над написанием графического интерфейса на Haskell (и Ur/Web, но это уже другая история), и у меня есть несколько веток разработки, использующих разные библиотеки и подходы, над которыми я работаю одновременно. При попытке перенести часть кода, который у меня был, из библиотек пользовательского интерфейса, поддерживаемых браузером, с элементами HTML (если быть точным, из tripenny-gui) в собственные апплеты с графическим интерфейсом WX, используя графический интерфейс WX (wxHaskell, реактивный-банан), я столкнулся с некоторыми проблемами при определении как перенести какой-то код, который у меня был, который был основан на построении <table> элемент эквивалентной конструкции wxWidgets. Мне показалось, что не было простого способа реализовать такую ​​вещь самостоятельно, и не было собственного эквивалента. Я ищу предложения по реализации, указатели на существующие реализации, подходящие альтернативы и так далее. Я могу предоставить более глубокую специфику дизайна, который я ищу, если это потребуется.

HTML-таблица просто используется для выравнивания и отображения данных, где одна ячейка в каждой строке является реактивным элементом управления, а количество строк, отображаемых в любой момент времени, также может изменяться реактивно.

1 ответ

HTML-таблица может содержать практически все в своих ячейках, поэтому она слишком богата, чтобы быть представленной любым собственным элементом управления. Очень трудно дать рекомендацию, не зная, что именно у вас есть в таблице, но возможны следующие варианты:

  • wxHtmlWindow: это может быть использовано для повторного использования вашего HTML при условии, что он достаточно прост (в основном HTML4), и вы можете встраивать нативные элементы управления в него, если это необходимо.
  • wxGridЭто самый гибкий виджет, но он не является родным.
  • wxDataViewCtrl: это встроенный элемент управления под GTK и OS X (но не MSW, где вам нужно использовать wxListCtrl для 100% нативного подхода), но он довольно ограничен по сравнению с любым из вышеуказанных решений.
Другие вопросы по тегам