Название: QPushButton content (text, icon) alignment Отправлено: fear от Октября 11, 2008, 15:16 Текст и иконка в QPushButton по дефолту центрирован. Как можно это изменить, например прижать контент вправо или влево?
Ещё интересно каким образом можно добавить допалнительный контент в QPushButton, например ещё одну иконку. ??? Пытался получить указатель на layout, не получилось, возвращается 0 Код: class MyPushButton: public QPushButton Название: Re: QPushButton content (text, icon) alignment Отправлено: IGHOR от Октября 13, 2008, 22:33 Код: QPushButton *myButton = new QPushButton(this); Так подойдет ? Название: Re: QPushButton content (text, icon) alignment Отправлено: fear от Октября 14, 2008, 08:50 Так подойдет ? неа, это изврат :) единственное правильное решение насколько я понимаю курить QStyle Название: Re: QPushButton content (text, icon) alignment Отправлено: Alex03 от Октября 15, 2008, 06:09 неа, это изврат :) единственное правильное решение насколько я понимаю курить QStyle Ну почему же единственное? Можете сформировать всё что Вам надо в QPixmap, и передать его в конструктор QIcon. Можете породить свой класс от QAbstractButton. Название: Re: QPushButton content (text, icon) alignment Отправлено: fear от Октября 16, 2008, 13:12 Ну почему же единственное? Можете сформировать всё что Вам надо в QPixmap, и передать его в конструктор QIcon. Можете породить свой класс от QAbstractButton. В первом варианте не понятно как это может решить вопрос, иконка также будет отцентрирована по центру. Породить свой класс можно, переопределить метод paintEvent() тоже, это быстрое решение, но не правильное потому что таким образом будет разорвана связь стилей приложения с нашей кнопкой Решил задачу следующим образом: В собственном стиле переопределил метод drawControl() для CE_PushButtonLabel. Код позаимствовал из qcommonstyle.cpp, добавив возможность изменения размещения, заменив: Код: iconRect = QRect(textRect.x(), textRect.y() + (textRect.height() - labelHeight) / 2, pixmap.width(), pixmap.height()); Код: Qt::Alignment labelAlign = Qt::AlignLeft; |