Как создать упрощенные оконные элементы в программе командной строки?
Когда я выполню sudo dpkg-reconfigure lightdm
в терминале вижу упрощенное оконное меню. Есть ли способ сделать что-то подобное в C++?
Это выглядит примерно так:
1 ответ
Текстовый оконный интерфейс, содержащийся в терминале, который вы видите при запуске sudo dpkg-reconfigure lightdm
кодируется с помощью библиотеки ncurses. Поэтому, если вы хотите, чтобы ваша программа предоставляла интерфейс, который выглядит так, вы также можете использовать ncurses.
Вы можете установить некоторые файлы документации ncurses с помощью ncurses-doc пакет.
Это включает в себя man-страницу ncurses, которую вы также можете посмотреть онлайн здесь. Он также включает справочные страницы для всех функций, предоставляемых библиотекой ncurses (некоторые используют общую страницу). Эти man-страницы в настоящее время не онлайн на http://manpages.ubuntu.com/.
Для сборки программного обеспечения с использованием ncurses в Ubuntu вы должны получить соответствующий пакет заголовочных файлов. Если вы не кросс-компилируете, это будет:
Для программ, использующих традиционные строки, в которых большинство символов представлено одним байтом (например, UTF-8), используйте libncurses5 ,
Это, вероятно, то, что вы хотите, если ваши строки массивы
char
(на C и других языках на основе C) илиstd::string
(в C++).Для программ, требующих поддержки широких символов, используйте libncursesw5 ,
Это вам особенно понадобится, если ваши строки представляют собой массивы
wchar_t
(на C и других языках на основе C) илиstd::wstring
,std::u16string
, или жеstd::u32string
(в C++).
По желанию, для помощи в отладке вашей программы вы также можете использовать символы отладки (для отладчиков, таких как gdb). Для этого установите libncurses5-dbg или libncursesw5-dbg тоже.
См. Также страницу ncurses в Ubuntu на Launchpad, которая содержит список основных пакетов ncurses в Ubuntu, а также информацию о версии для каждого поддерживаемого в настоящее время выпуска Ubuntu.
Когда вы строите свою программу с GCC (например, с gcc
или же g++
команды), дать ему аргумент -lncurses
или же -lncursesw
обычно в самом конце команды. Это связывает вашу программу с библиотекой ncurses. Например:
g++ -Wall -g -o hello hello.cpp -lncurses
Это компилирует hello.cpp для создания исполняемого файла с символами отладки (-g
), называется привет (-o hello
), предупреждая о большинстве вещей, о которых вы можете захотеть получить предупреждение (-Wall
) и ссылки на обычную (не широкие символы) библиотеку ncurses (-lncurses
).