Написание GUI / фреймворка приложения было бы отличным опытом обучения, но даже довольно небольшая фреймворк приложения была бы очень большой работой, и вам не нужно заниматься этим, пока вы не станете достаточно опытным в написании приложений с использованием нескольких других фреймворков и наборы инструментов виджетов.
Однажды я сделал что-то подобное, еще в начале этого десятилетия. Это было после того, как я программировал для Mac более 15 лет, для Windows более 10 лет, и программировал как непосредственно для их собственной графики, событий и API виджетов, так и для различных объектно-ориентированных наборов инструментов для них, включая PowerPlant, MFC и MacApp. Когда я начал работать над приложением PalmOS, я потратил пару недель на написание очень маленькой платформы приложений, смоделированной на PowerPlant. Но я не смог бы преуспеть вообще без этих десятилетий широкого и глубокого опыта работы с таким большим количеством систем графического интерфейса.
Делать это для Linux / X11 - еще больше работы. Это связано с тем, что, в отличие от Mac OS и Windows, ни X11, ни Linux не предоставляют встроенные виджеты пользовательского интерфейса, а также не имеют много графических примитивов или возможностей разметки текста. GTK + является частью экосистемы GNOME; он предоставляет виджеты, получает свою очередь сообщений и внутреннюю связь от GObject, использует GDK для абстрагирования и упрощения передачи графики и событий с помощью X11, а также использует Pango и Cairo для рендеринга и разметки текста. Я работаю по всей этой системе, и она, вероятно, представляет собой много десятков человеко-лет тяжелой работы очень умных людей. И я уверен, что Qt очень похож.
Так что, если вы действительно хотите это сделать, я бы порекомендовал вам:
- Написание программ с много различных приложений и наборов виджетов, на нескольких операционных системах. Это поможет вам узнать не только , как работают такие системы, но и почему они спроектированы такими, какие они есть. И это даст вам некоторое представление о том, что работает хорошо, а что плохо.
- Внесите исправления ошибок или новые функции в одну или несколько различных сред с открытым исходным кодом. GTK + имеет список задач для начинающих по . Еще один отличный фреймворк с открытым исходным кодом - wxWidgets .
- Станьте программистом C / C ++ уровня эксперта.
Когда вы сделаете это в течение нескольких лет, у вас будет опыт, подходящий для решения ваших собственных задач.