Я бы хотел сделать QPushButton
перенос слов и развернуть его вместо ширины. Как я могу это сделать?Есть ли способ включить перенос текста текста на некоторые простые виджеты, такие как QPushButton?
Есть ли способ включить перенос текста текста на некоторые простые виджеты, такие как QPushButton?
ответ
Для переноса слов в обычный QPushButton вы можете реализовать класс прокси-класса, полученный из QProxyStyle.
/**
proxy style for text wrapping in pushbutton
*/
class QtPushButtonStyleProxy : public QProxyStyle
{
public:
/**
Default constructor.
*/
QtPushButtonStyleProxy()
: QProxyStyle()
{
}
virtual void drawItemText(QPainter *painter, const QRect &rect,
int flags, const QPalette &pal, bool enabled,
const QString &text, QPalette::ColorRole textRole) const
{
flags |= Qt::TextWordWrap;
QProxyStyle::drawItemText(painter, rect, flags, pal, enabled, text, textRole);
}
private:
Q_DISABLE_COPY(QtPushButtonStyleProxy)
};
И позже в собственном MyQtPushButton:
MyQtPushButton::MyQtPushButton()
: QPushButton()
{
setStyle(new QtPushButtonStyleProxy());
}
Смотрите дополнительную информацию о классе QProxyStyle в Qt документации.
Возможно, что-то не так. Кнопки не должны содержать много текста, а несколько слов, описывающих действия, которые необходимо предпринять. Если вы хотите сделать это многострочным, вам лучше подумать о предоставлении QLabel с соответствующим описанием.
В любом случае, я не знаю [способ поддержки Qt], чтобы это сделать. Такая же проблема существует, например, для подписи QHeaderView, где она может быть еще более применимой. Вручную, вы всегда можете сделать это, добавив в строки заголовков "\n"
(которые вы можете автоматизировать наверняка).
Ну, это делает многострочный не совсем мой запрос. Тем не менее, в нынешней ситуации я согласен с этим, поскольку кнопка должна быть большой и нажиматься на сенсорный экран. Так или иначе, это не должно выглядеть как обычная кнопка. – Septagram
Рассмотрите возможность написания собственного класса кнопок? :) –
Вы всегда можете перейти на уровень создания пользовательских виджетов. Суть заключается в том, чтобы как можно больше зависеть от существующих компонентов. –
Существует solution, используя текст на графике SVG. Проверь это.
Используйте QToolButton вместо QPushButton. QToolButton может использовать многострочный текст, а размер QToolButton легче контролировать, чем размер QPushButton.
Вчера мы рассмотрели возможность отображения 'QLabel' на' QPushButton', вы можете использовать этот метод: http://stackoverflow.com/a/8960548/774651 – Lol4t0