LINUX.ORG.RU

спецам по wxWidgets пара вопросов


0

1

Приветствую, имеется пара вопросов по wxWidgets, растолкуйте:

  • Есть ли wxWidgets аналог QIconsView? Вернее он есть, называется wxListCtrl, но у меня не получается в нём нормально расположить большие(32х32) иконки. Они заполняют весь контрол и скролинг появляется только горизонтальный. А мне нужно расположить их в 2-3 колонки и прокручивать вертикально(при этом чтобы размер иконок был 32х32, со столбцами получается только в режиме отчёта, но это не то), никак не могу этого добиться.
  • Есть код, почему ловлю segfault?
    wxWindow w;
    wxDC dc(&w); // <--- segfault
    dc.GetTextExtent(Text, &x2, &y2, NULL, NULL, &Font);
    
    Здесь dc мне по сути нужен только чтобы получить размер строки в пикселях. А оно никак, не получать же постоянно размер строки в paint event-е во время отрисовки? мне надо то получить его один раз.
★★★★★

wxDC абстрактный класс (во всяком случае был таковым), странно, что оно собралось вообще. Используй wxMemoryDC/wxClientDC.

Amp ★★★
()

Есть ли wxWidgets аналог QIconsView?

wxSimpleHtmlListBox смотрели? Вообще можно отнаследоваться от wxHtmlListBox и рисовать, натурально, HTML-ом все что нужно

почему ловлю segfault?

Возможно из-за этого: «Notice that wxDC is an abstract base class and can't be created directly»?

Размер можно получать в paint event-е только во время первой отрисовки, потом выставить флаг и не получать. Так уж наверняка будет работать. Но если это задевает эстетические чувства, можно, наверное, получить в конструкторе, только передать правильный wxWindow *

Deleted
()
Ответ на: комментарий от Deleted

C wxDC я немного неправильно написал, там должно быть wxPaintDC, в любом случае второй вопрос решил, выкрутился с помощью wxScreenDC(как вариант wxMemoryDC), он не требует окна и можно спокойно использовать функцию GetTextExtent. Остался только первый вопрос, пойду погляжу на wxSimpleHtmlListBox :)

xterro ★★★★★
() автор топика
Последнее исправление: xterro (всего исправлений: 1)

Есть ли wxWidgets аналог QIconsView

Можешь покопать wxGenericListCtrl, можешь повозиться с wxGrid, написав кастомный cell-render и отключив отрисовку сетки с заголовками. Простых кроссплатформенных вариантов кажется нет для этого.

Amp ★★★
()
Ответ на: комментарий от Amp

Короче - добро пожаловать в чудесный мир wxWidgets и костылей.

Amp ★★★
()
Ответ на: комментарий от Amp

Изначально была мысль вооще взять табличный Sizer, накидать на него кнопок, у кнопок поставить картинок, сделать их плоскими, белого цвета + белым сделать фон, только не уверен на счёт текста под иконками в этом случае.

xterro ★★★★★
() автор топика
Ответ на: комментарий от xterro

Самое верное решение - это написать свой контрол, если потраченного времени не жалко. Для того же Qt сделали Itemviews-NG, когда перестало хватать функционала стандартных виджетов.

Amp ★★★
()
Ответ на: комментарий от xterro

Это конечно хорошо, но надо сидеть разбираться с устройством родителя wxListCtrl :(

С устройством родителя разбираться не надо - это будет какой-нибудь wxControl или wxWindow, вся возня будет с кастомной отрисовкой. Но зато потом можно будет более гибко все затачивать под себя.

Amp ★★★
()
Ответ на: комментарий от Amp

Тут как раз фишка в том, что стандартная отрисовка вполне устраивает, не устраивают скролбары там где они не нужны. Пойду поковыряю код )

xterro ★★★★★
() автор топика
Последнее исправление: xterro (всего исправлений: 1)
Ответ на: комментарий от xterro

Тут как раз фишка в том, что стандартная отрисовка вполне устраивает, не устраивают скролбары там где они не нужны. Пойду поковыряю код )

wxListCtrl в windows использует стандартный апишный listview - особо ковырять там нечего. Если дернуть метод Arrange(), то это будет работать только в Windows. В линуксе вроде как используется упоминаемый выше wxGenericListCtrl - можно попробовать допилить/отнаследоваться и использовать его везде.

Amp ★★★
()
Ответ на: комментарий от Amp

Да, именно так и хотел поступить, пока пытаюсь понять как он отрисовывает в режиме иконок, явных указаний на это в коде не нашел. В режим отчета вроде как понятно, а вот реж иконок не пойму

xterro ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.