В настоящее время у вас есть виджет метки настолько широкий, насколько это необходимо для размещения текста, и виджет центрируется в доступном пространстве. (Пробелы по сторонам этикетки являются частью HBox
.)
-----------------------------------------------
| | Label | | Button || Button ||
-----------------------------------------------
^^^^^^^^ ^^^^^^^^
These spaces are the padding that was expanded, as requested.
Чтобы текст проходил влево, вам нужно изменить эту настройку. Я могу предоставить два варианта.
Разверните виджет и переместите текст
Может быть полезно (для событий мыши?), Чтобы виджет метки заполнил доступное пространство, полностью скрывая HBox
.
-----------------------------------------------
|| Label || Button || Button ||
-----------------------------------------------
Этого можно добиться, изменив упаковку с Gtk::PACK_EXPAND_PADDING
на Gtk::PACK_EXPAND_WIDGET
.
Однако само по себе это изменение, похоже, ничего не изменило, так как текст по умолчанию центрирован в виджете метки. Таким образом, вы также хотите позвонить set_xalign()
. Параметром этой функции является значение с плавающей запятой от 0 до 1, где 0 - крайний левый, а 1 - крайний правый.
Ваш код будет выглядеть примерно так:
m_label.set_xalign(0.0f); // <-- set text alignment
m_control_HBox.pack_start(m_label, Gtk::PACK_EXPAND_WIDGET); // <-- change packing
m_control_HBox.pack_start(m_open_button, Gtk::PACK_SHRINK);
m_control_HBox.pack_start(m_delete_button, Gtk::PACK_SHRINK);
Переместить метку
Другой вариант - сохранить ширину виджета с надписью, но переместить ее полностью влево.
-----------------------------------------------
|| Label | | Button || Button ||
-----------------------------------------------
^^^^^^^^^^^^^^^^
This space within the HBox has no widgets covering it.
Для начала вы поставите этикетку в той же упаковке, что и кнопки, Gtk::PACK_SHRINK
. Хитрость в том, чтобы удерживать кнопки справа. Это цель функции pack_end()
. Упакуйте ярлык с самого начала и кнопки с конца.
m_control_HBox.pack_start(m_label, Gtk::PACK_SHRINK); // <-- Change packing
m_control_HBox.pack_end(m_open_button, Gtk::PACK_SHRINK); // <-- pack_end
m_control_HBox.pack_end(m_delete_button, Gtk::PACK_SHRINK); // <-- pack_end