С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

WxWidgets - кто пользуется - C++

03.07.2015, 18:38. Просмотров 1062. Ответов 18
Метки нет (Все метки)

Гуру WxWidgets, дайте советы...

Я пришел из Делфи, поэтому для меня этот кошмар довольно новый...

Нужно в С++ делать оконные программы. Остановился на wxWidgets+CodeBlocks+MinGW.

А теперь собственно вопросы:

1) После Делфи бесит скупость редактора окошек. Это я что-то забыл установить или это норма? Например как делается простое "приклеивание к бортикам" компонента или растягивание панели вдоль нижней границы? Или растягивание редактора на всю оставшуюся часть? Перетасквать компоненты можно только по одному, копирование-вставка компонент не работает. Может есть альтернативные редакторы? (в делфи базовый дизайн из десятков компонент делался минут за 10, а тут 3 кнопки таскаю по экрану уже час)

2) Есть ли ВСТРОЕННЫЙ редактор RichEdit? Куда можно скопировать-вставить цветной текст из ворда. Куда можно выводить цветные строки разными шрифтами? Или вообще сделать полноценный редактор RTF файлов? В Делфи был компонент TRichEdit похоже созданный на основе WinAPI

3) Если (когда) я захочу перейти под MacOS/Linux, что мне предстоит переделывать? Слышал что обязательно прийдется немножко "перепиливать". Учитывая что мне не нужен полный функционал окошек (5-8 ВИДОВ компонент), хотелось бы предусмотреть это и максимально уменьшить переделку потом.

4) Тяжело ли написать свой оконный компонент? Есть ли сборники опенсорс компонент? Тяжело ли их подключить? Насколько они мультиплатформенные?

Не по теме:

Говорят Qt удобнее, но ОЧЕНЬ не хочется. И еще мне ОЧЕНЬ нужна КОНСОЛЬНАЯ сборка проекта. Под wxWidgets я смог это настроить (долго мучился). А еще слышал что сборка под Qt намного дольше wxWidgets и занимает под 40Мб. Нужно написать простой набор редакторов полей к моей-же библиотеке написанной под Codeblocs+MinGW.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2015, 18:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос WxWidgets - кто пользуется (C++):

WinAPI vs wxWidgets - C++
Хочу перевести свое консольное приложение в нормальный вид. Опыта написания приложений виндовс нету. С чего стоит начать, с WinAPI или...

Изображения в wxWidgets - C++
Необходимо создать wxBitmapButton и установить ей картинку из файла относительно местоположения к программе, например, "data\\img.jpg". При...

Mingw и wxWidgets - C++
Появилась необходимость разработать программу, используя wxWidets. Распаковал, собрал, попытался скомпилировать пример - не получилось....

wxWidgets SetBitmap - C++
Доброе утро, с не давнего времени изучаю C++, до этого изучал C#. Возникла потребность в WxStaticBitmap сменить битмап (например на...

WxWidgets - в консольном приложении - C++
Начал изучение библиотек wxWidgets в Code Blocks, столкнулся с проблемой компиляции, вроде все подключено,просто строку в консоль выводит а...

Имитация действий в wxWidgets - C++
Добрый день! Есть такая проблема. Программа, написана на Visual C++ с использованием wxWidgets. Задача: сымитировать рабочую сессию....

18
smartpointer
69 / 63 / 24
Регистрация: 17.02.2014
Сообщений: 264
03.07.2015, 19:30 #2
Попробую ответить на часть вопросов, правда wxWidgets знаю плохо, в любом случае вам придется самому разбираться в документации.Скажу одно, практически все, что есть в WinAPI есть в wxWidgets, ну собственно и ближайшие аналоги виджетов для линукса точно - для остальных платформ не в курсе.
Цитата Сообщение от Tester64 Посмотреть сообщение
Например как делается простое "приклеивание к бортикам" компонента или растягивание панели вдоль нижней границы? Или растягивание редактора на всю оставшуюся часть?
Всем этим занимаются классы wxSizer и их потомки - они достаточно мощные, можно настроить так как вам удобно, включая границы отступы и реакции на растягивания, туториалы есть в рунете.
Цитата Сообщение от Tester64 Посмотреть сообщение
Может есть альтернативные редакторы?
В CodeBlocks есть только встроенный редактор wxSmith.
Цитата Сообщение от Tester64 Посмотреть сообщение
Есть ли ВСТРОЕННЫЙ редактор RichEdit?
wxRichTextCtrl - при добавлении виджета, присутствуют все дефолтные операции, нужное\ненужное необходимо переопределять в своем коде.
Цитата Сообщение от Tester64 Посмотреть сообщение
4) Тяжело ли написать свой оконный компонент?
С этим проблем нет - наследуетесь от любого нужного вам виджета и добавляете то что вам нужно. Большинство нужных функций виртуальные можно переопределить, а также их обработчики событий.
P.S советую посмотреть семплы там же имеются сорцы - думаю множество вопросов отпадут, ну и в любом случае придется изучать их скудную документацию.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.07.2015, 08:53  [ТС] #3
Цитата Сообщение от smartpointer Посмотреть сообщение
wxRichTextCtrl - при добавлении виджета, присутствуют все дефолтные операции, нужное\ненужное необходимо переопределять в своем коде.
Пробовал... Может я что-то напутал, но я не смог туда вставить через Ctrl+V, Shift+Ins и даже через меню, текст скопированный в TRichEdit. Я думал это стандартная операция на уровне WinAPI и ее нужно разве что специально "перекрывать". Обычный текст - вставляется из буфера...

Цитата Сообщение от smartpointer Посмотреть сообщение
правда wxWidgets знаю плохо
А есть те кто этим пользуется профессионально?
Накачал кучу примеров бинарников написаных на wxWidgets... Почти шедевры! (почти как на Делфи) Шустрые, компактные, со сложными графическими компонентами (редактор аудио-файлов рисует графики - анимация очень быстрая). То что видел на Qt после этого кажется огромным и тормознутым... Хотя может и редакторы удобнее у Qt.
А на чем пишет большинство??? Для КОММЕРЧЕСКИХ продуктов?
(может я изначально не правильный инструмент выбираю)

Добавлено через 36 минут
Цитата Сообщение от smartpointer Посмотреть сообщение
Всем этим занимаются классы wxSizer и их потомки
Не понял, это не графические классы?
Начал гуглить и сплошные команды - "как подключить сайзер"
Тоесть до компиляции и запуска я не увижу результат того как "растянул/прижал" сайзер мой компонент?
0
smartpointer
69 / 63 / 24
Регистрация: 17.02.2014
Сообщений: 264
04.07.2015, 09:24 #4
Цитата Сообщение от Tester64 Посмотреть сообщение
Не понял, это не графические классы?
Нет, это не класс виджетов - такая штука идет к каждому окну, и нужно знать как они работают в этом случае меньше возни с постоянной перекомпиляцией.
Цитата Сообщение от Tester64 Посмотреть сообщение
А есть те кто этим пользуется профессионально?
Риторический вопрос CodeBlocks написан полностью на нем, есть еще Audacity - звуковой редактор.Редактор уровней для движка Unreal Engine.
Цитата Сообщение от Tester64 Посмотреть сообщение
То что видел на Qt после этого кажется огромным и тормознутым...
Все же большинство программистов пишут на нем, в отличие от виджетов QT рисует все сам. Если вам нужно что-то быстро написать лучше остановить свой выбор на QT - у них больше комьюнити и лучше справка.
1
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
04.07.2015, 09:48 #5
Цитата Сообщение от Tester64 Посмотреть сообщение
Не понял, это не графические классы?
Начал гуглить и сплошные команды - "как подключить сайзер"
Тоесть до компиляции и запуска я не увижу результат того как "растянул/прижал" сайзер мой компонент?
Дисклеймер: я ни codeblocks, ни wxWidgets в жизни не видел, поставил только несколько минут назад.

В редакторе wxSmith есть вкладка Layout с различными сайзерами. Можно таскать мышкой на форму и комбинировать как нравится. Результат, отображаемый в редакторе, отличается от фактического хотя бы потому, что в моем случае редактор, например, не учитывает высоту и ширину родительского wxDialog и отображает все более компактно.

Еще в официальной вики есть туториал: Building more complex window.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.07.2015, 10:16  [ТС] #6
Цитата Сообщение от smartpointer Посмотреть сообщение
Риторический вопрос CodeBlocks написан полностью на нем, есть еще Audacity - звуковой редактор.Редактор уровней для движка Unreal Engine.
Я имел в виду кто-нибудь ИЗ ВАС на WxWidgets пишет профессионально?
То что этим пользуется Unreal это конечно круто, но там много кодеров, а я один! И если мне нужно "набросать" простую утилиту-калькулятор или простой редактор полей базы, то не хочу возвращаться в Делфи(платный и умирающий с каждым выходом нового релиза, не смотря на все свои достоинства)...

Не по теме:

Например надо было в трей запихнуть автоматический проверяльщик сайта (скачать zip/отправить zip) - 5-6 кнопок, мемо и 2-3 едитора для настроек. Работы на 5-6 часов. Графический дизайн сделал за 5 минут - остальное писал функционал кнопок. Мне часто приходится писать такие "утилитки". Желательно маленького размера, а не в 40-50мб. И шустрые. Поэтому пока и не смотрю на Qt.



Цитата Сообщение от 0x10 Посмотреть сообщение
В редакторе wxSmith есть вкладка Layout с различными сайзерами. Можно таскать мышкой на форму и комбинировать как нравится. Результат, отображаемый в редакторе, отличается от фактического хотя бы потому, что в моем случае редактор, например, не учитывает высоту и ширину родительского wxDialog и отображает все более компактно.
Понятно что "чуть-чуть" будут отличаться, но раньше привык просто выставлять у кнопки "прижать влево" и она отодвигала остальные кнопки... И это-же задавало кнопке автоматическую высоту... Теперь похоже все это делается ТОЛЬКО через код... Неприятно... Надо привыкнуть...
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
04.07.2015, 10:20 #7
Цитата Сообщение от Tester64 Посмотреть сообщение
Понятно что "чуть-чуть" будут отличаться, но раньше привык просто выставлять у кнопки "прижать влево" и она отодвигала остальные кнопки... И это-же задавало кнопке автоматическую высоту...
Мне сложно воспринимать художественный пересказ gui-лейаута. Можно пример картинкой? Хоть в пеинте. Я же выше написал, что лейауты в графическом редакторе есть. Может быть, я просто не понял какого результата хочется получить?
0
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.07.2015, 10:56  [ТС] #8
Цитата Сообщение от 0x10 Посмотреть сообщение
Мне сложно воспринимать художественный пересказ gui-лейаута. Можно пример картинкой? Хоть в пеинте. Я же выше написал, что лейауты в графическом редакторе есть. Может быть, я просто не понял какого результата хочется получить?
Тяжело это сделать статическими картинками. Там в каждом элементе (кнопке, панели, мемо,..) было поле (Align) в списке графических параметров отвечающее за позицию каждого элемента. Поменяв слева направо я менял позицию элемента без перетягивания его в другой "квадрат" сайзера. А еще сайзер должен ложиться на пустую форму. И если хочу поменять вид сайзера для другой растановки обьектов, должен ее сначала очистить (или искать полу-хакерские плоходокументированные не логичные/нативные методы для подмены)

верний абзац с картинкой: http://thedelphi.ru/les/les8.php

или это как получить? http://www.webdelphi.ru/wp-content/u...alFitRight.jpg

Я попробовал добавить 2 батона в горизонтальный сайзер. Получил равномерное растягивание двух тонких кнопок 50%(это управляется? могу поставить 60/40? в настройках нет.) от ширины. Но высота осталась те-же 30 пикселов! Раньше я бы получил растягивание кнопок и в верх в высоту. Теперь на высокой форме получил две тонюсенькие кнопки в центре.

Добавлено через 10 минут
Обидно другое! Еще студентом (лет 10 назад) я на Делфи нарисовал механизм управления компонентами формы поудобнее. Да и готовые чужие наработки под Делфи были в опенсорсе - там можно выделить несколько элементов и их плавно двигать. И кнопками управлять можно. А тут стрелки - вообще "глухие" на выделеном компоненте... Такое чувство что довели до состояния "заработало хоть как-то, в принципе работать можно, ну и ладушки... потом как-нибудь может быть доведем до ума".
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
04.07.2015, 11:00 #9
Цитата Сообщение от Tester64 Посмотреть сообщение
Но высота осталась те-же 30 пикселов! Раньше я бы получил растягивание кнопок и в верх в высоту.
У кнопок есть флаг Expand.
1
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.07.2015, 11:11  [ТС] #10
А все-таки, то что большинство пользуются Qt это я уже понял, а "меньшенство"? РЕАЛЬНО кто-нибудь ИЗ ВАС использует wxWidgets в повседневной работе?

Может я зря затеял эту возню с wxWidgets?
0
smartpointer
69 / 63 / 24
Регистрация: 17.02.2014
Сообщений: 264
04.07.2015, 11:23 #11
В виджетах сам сайзер берет полностью полость окна родителя. То есть у каждого окна есть метод SetSizer(wxSizer*) - к этому сайзеру можно применить еще сайзер к дочернему еще один и т.д, в настройках сайзера можно указать оффсет до формы - причем этот оффсет может быть растягивающимся либо нет, Align также присутствует -лево\право\центр и т.д - плюс к этому можно задать будет ли растягиваться форма.Про wxSmith не в курсе, возможно ли это сделать средствами этого плагина, но кодом это реализовать можно точно (по второй картинке).Пропорциональность также задается в сайзерах.

Добавлено через 2 минуты
Цитата Сообщение от Tester64 Посмотреть сообщение
Может я зря затеял эту возню с wxWidgets?
Вы хотите получить результат сразу как в Дельфи, тут такого не получится,чтобы получить нужный результат все нужно делать руками, сомневаюсь что wxSmith может выдать сложный лейаут.
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
04.07.2015, 11:27 #12
Цитата Сообщение от Tester64 Посмотреть сообщение
олучил равномерное растягивание двух тонких кнопок 50%(это управляется? могу поставить 60/40? в настройках нет.) от ширины.
Есть свойство prorortion.
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
04.07.2015, 11:32 #13
Не знаю, насколько это соответствует ожиданиям, но просто потыкав wsSmith получил такой результат.
0
Миниатюры
WxWidgets - кто пользуется   WxWidgets - кто пользуется  
Tester64
396 / 357 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
04.07.2015, 12:23  [ТС] #14
Цитата Сообщение от smartpointer Посмотреть сообщение
В виджетах сам сайзер берет полностью полость окна родителя.
Меня убивает то что если если я положил на окно родитель не тот сайзер, то все! Стирай и начинай с начала... В делфи у меня был проект в котором было больше 400 кнопок на одной форме. Прятал в закладки, выносил на главное окно, растягивал одну из важных в данный момент кнопок вдоль всего низа или верха "окна-родителя". Копировал и вставлял дубли десятками (все настройки выделенного уже устраивает - надо лишь другие обработчики на кнопки назначить)

Я уже поигрался с рабочей областью, накидал компонент, уже даже приписал к некоторым код (хелло ворд, но все-таки). А теперь надо положить на основу сайзер... Похоже ВСЕ переписывать надо! Причем даже не могу сделать форму-клон и скопировать оттуда нужное! Вроде элементарные вещи, я сам такое на Делфи писал за неделю-две! почему-же сишникам это не нужно??? Я понимаю что перейдя на С++ я должен и думать научиться "по другому", но пока мне это не понятно! неделя-две работы для профи и редактор станет крайне удобным...

А как дело обстоит в Qt? Или в MSВижуалС++?
0
smartpointer
69 / 63 / 24
Регистрация: 17.02.2014
Сообщений: 264
04.07.2015, 13:29 #15
Цитата Сообщение от Tester64 Посмотреть сообщение
Меня убивает то что если если я положил на окно родитель не тот сайзер, то все! Стирай и начинай с начала... В делфи у меня был проект в котором было больше 400 кнопок на одной форме. Прятал в закладки, выносил на главное окно, растягивал одну из важных в данный момент кнопок вдоль всего низа или верха "окна-родителя". Копировал и вставлял дубли десятками (все настройки выделенного уже устраивает - надо лишь другие обработчики на кнопки назначить)
Вы думаете wxWidgets это не умеет ? Умеет, в том числе изменять все это динамически. Скиньте сюда или ко мне в личку ваш exe-шник - попробую скопировать со всеми растяжениями и отступами.
Цитата Сообщение от Tester64 Посмотреть сообщение
А как дело обстоит в Qt? Или в MSВижуалС++?
Тоже самое, возможно с большим функционалом. Имхо - это не повод забивать на инструментарий, не разобравшись в нем.
0
04.07.2015, 13:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2015, 13:29
Привет! Вот еще темы с ответами:

Как совместить wxWidgets 3.0.2 и MVS 2013 Ultimate - C++
Здравствуйте! Подскажите пожалуйста, как совместить wxWidgets 3.0.2 с MVS 2013 Ultimate для написание оконных программ, и стоит ли...

List (STL) не пользуется конструкторами копий базовых классов - C++
Ситуация: Производный класс образован от двух базовых. Базовые классы не пустые, в одном хранится ссылка на картинку Grphics::TBitmap, а...

Как сохранить картинку внутри exe файла в Resources(Codeblocks&WxWidgets) - C++
?? программа небольшая, неохота тягать с собой еще и отдельную папку icons с картинками

Тонкости терминологии: что такое оператор, операция, инструкция и кто из них operator, а кто statement? - C++
лучше говорить операция, так как оператор в англоязычной литературе, это нечто иное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.