Боксирующие кнопки
Исходный код программы для этой главы можно найти здесь.
В этом разделе мы рассмотрим, как структурировать ваш UI с помощью упаковок
(box), изменять метку
(label) и запрограммировать нажатие по кнопке. А также, к концу вы поймёте, как:
- Добавлять дочерние элементы в панель заголовка;
- Добавлять классы стилей к кнопке;
- Управлять состоянием приложения с помощью атомарных счётчиков Arc и выравнивать виджеты внутри контейнера.
Напомним, что каждый GTK объект, который можно получить из контейнера gtk - заворачивают, так что не стоит беспокоится о правилах заимствования Rust. Объекты GTK считают ссылки, поэтому, когда вам нужно передать GTK объект через несколько замыканий, вы можете сделать это с помощью клонирования новой ссылки.
Необходимые знания
Прежде чем продолжить изучение урока, убедитесь что вы понимаете что такое атомарность и атомарный счётчик ссылок (Arc). Эти понятия критически важны для возможности разделять состояние между несколькими замыканиями или потоками.
Изучить этот вопрос можно в документации модулей std::sync
и std::sync::atomic
. Так же, вы можете ознакомиться с безблокировочной конкурентностью (lockless concurrency) в этом документе.