Лично, я люблю zsh.
Обычно Вы, вероятно, не заметите различия между ним и ударом, пока Вы не захотите быстро сделать вещи как рекурсивный globbing:
**/*.c
, например. Или использование снабжают суффиксом псевдонимы для соединения определенного progs с различными суффиксами, так, чтобы можно было "выполнить" их непосредственно. Ниже псевдонима позволяет Вам "выполнить" исходный файл C при подсказке путем простого ввода ./my_program.c
†“, который будет работать точно, как будто Вы ввели vim ./my_program.c
. (Вид эквивалента двойному щелчку по значку файла.)
alias -s c=vim
Или печать названия файлов, измененных сегодня:
print *(e:age today now:)
можно, вероятно, сделать все эти вещи в ударе, но мой опыт с zsh состоит в том, что, если существует что-то, которое я хочу сделать, я могу, вероятно, найти его в zsh-любители . Я также нахожу книгу' От Bash до Z-Shell ' действительно полезной.
Игра с умом bogglingly большое количество опций является хорошим развлечением также!
Ну, конкретно для комбинированного списка вы можете установить модель. Для QObjects в целом вы можете использовать сигнал уведомления для свойств для подключения или другие сигналы, не относящиеся к свойствам. Я думаю, что есть другой способ сделать это, но я не могу вспомнить.
Один из способов - использовать классы модели / представления Qt (с базой в QAbstractItemModel), но им нужно, чтобы ваш виджет унаследовал QAbstractItemView (это такие виджеты, как QTableView и т. Д.).
Если вы хотите сопоставить модель Qt с набором виджетов, которые не имеют ничего общего с QAbstractItemView, вы можете использовать QDataWidgetMapper, который сопоставляет отдельный виджет с индексами модели / представления Qt. Но в любом случае, как сказал Аарон Дигулла, вы должны написать какой-то шаблонный код ...