Я использую несколько QToolButton s в пользовательском QGridLayout виджетах. Кнопки установлены для отображения значка + текста на основе назначенного по умолчанию QAction. Единственная проблема заключается в том, что содержимое (значок + текст) всегда выравнивается по левому краю.QToolButton с иконкой + текст: как центрировать оба?
Содержание (значок + текст, отмеченный как красное окно на снимке экрана), должен находиться в центре кнопки (обозначается синим полем).
В большинстве случаев это просто отлично, учитывая, что Qt автоматически пытается вынести эту кнопку с минимальным размером. Однако я растягиваю кнопку, чтобы хорошо вписаться в QGridLayout.
QToolButton* pButton = new QToolButton(0);
pButton->addDefaultAction(pAction);
pButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
pButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
QGridLayout *pActionAreaLayout = new QGridLayout;
pActionAreaLayout->addWidget(pSomeOtherWidget, 0, 0, 1, 2);
pActionAreaLayout->addWidget(pButton , 1, 0, 1, 1);
Есть ли способ заставить контент быть центрированным в кнопке?
PS: Я нашел следующий комментарий в another forum, который, однако, кажется, довольно агрессивен и на самом деле не ясно мне еще:
Вы можете попробовать сделать горизонтальное выравнивание с помощью таблицы стилей, но вы, вероятно, должны реализовать прокси QStyle и переопределить drawControl() для QStyle :: CE_ToolButtonLabel Или получить из QToolButton, перезаписать paintEvent() и вызвать стиль для всего, кроме метки.
Пожалуйста отправьте соответствующий код. – user2672165
@ user2672165: Я редактировал в коде в вопрос. Не уверен, что это помогает, хотя в этом случае ... –
Как насчет использования выравнивания в 'void QGridLayout :: addWidget (QWidget * widget, int row, int column, Qt :: Alignment alignment = 0)'? Также вы можете опубликовать изображение о том, как он выглядит и как вы хотите, чтобы он выглядел, потому что есть несколько параметров для рассмотрения? – user2672165