Russian Qt Forum
Ноябрь 24, 2024, 01:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [Решено] QToolButton и иконки  (Прочитано 18529 раз)
Serr500
Гость
« : Август 21, 2012, 10:35 »

Имеется QToolButton (или QPushButton, что, я думаю, непринципиально). В ней есть текст и иконка. Нормальное поведение QPushButton таково, что центрируется текст вместе с иконкой, а QToolButton прижимает текст и иконку к левому краю. Требуется прижать иконку к левому краю, а текст выровнять по центру оставшегося пространства. Как это возможно сделать?
Заранее спасибо.
« Последнее редактирование: Август 22, 2012, 11:07 от Serr500 » Записан
QtCoder
Гость
« Ответ #1 : Август 21, 2012, 11:15 »

Переопределить paintEvent и рисовать отдельно иконку отдельно текст где захочется
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Август 21, 2012, 11:21 »

Поковыряй qss.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Serr500
Гость
« Ответ #3 : Август 21, 2012, 11:25 »

Переопределить paintEvent и рисовать отдельно иконку отдельно текст где захочется
Не хотелось бы так делать...  Грустный

Поковыряй qss.
А чуть точнее можно? Что именно там ковырять?  В замешательстве Стыдно признаться, но с QSS мне ни разу не приходилось сталкиваться.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Август 21, 2012, 11:31 »

Глянул в справке, вроде, стилем не получится. Но я в стилях не силен, так что, спроси лучше у гугла.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Странник
Гость
« Ответ #5 : Август 21, 2012, 11:33 »

в qss выравнивание текста и иконки совместно задается, насколько я помню, так что не вариант.
Записан
QtCoder
Гость
« Ответ #6 : Август 21, 2012, 12:29 »

Переопределить paintEvent и рисовать отдельно иконку отдельно текст где захочется
Не хотелось бы так делать...  Грустный

Это идеологически самое верное решение.
Записан
Serr500
Гость
« Ответ #7 : Август 21, 2012, 12:40 »

Человек существо ленивое. Идеологически верное решение длинное и сложное. Гораздо проще пару строчек в стиле вписать. Но, похоже, придётся всё-таки создавать своего потомка кнопки с переопределённым paintEvent.
Записан
QtCoder
Гость
« Ответ #8 : Август 21, 2012, 12:49 »

Человек существо ленивое. Идеологически верное решение длинное и сложное. Гораздо проще пару строчек в стиле вписать. Но, похоже, придётся всё-таки создавать своего потомка кнопки с переопределённым paintEvent.

Ленивому существу не место в программировании на Qt  Улыбающийся
Записан
Serr500
Гость
« Ответ #9 : Август 21, 2012, 13:03 »

 Плачущий Пошёл пить йад...  Плачущий
Записан
porup
Гость
« Ответ #10 : Август 21, 2012, 13:51 »

Ленивый вариант.

Код:
    QLabel *labelIcon = new QLabel(this);
    labelIcon->setPixmap(QPixmap(":/print24.png"));

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(labelIcon);
    layout->addWidget(new QLabel("Print", this));

    ui->pushButton->setLayout(layout);
« Последнее редактирование: Август 21, 2012, 13:58 от porup » Записан
QtCoder
Гость
« Ответ #11 : Август 21, 2012, 14:16 »

Ленивый вариант.

Код:
    QLabel *labelIcon = new QLabel(this);
    labelIcon->setPixmap(QPixmap(":/print24.png"));

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(labelIcon);
    layout->addWidget(new QLabel("Print", this));

    ui->pushButton->setLayout(layout);

Что-то текст на картинке не по центру кнопки. Он естессно по центру второго label.
Записан
torwig
Самовар
**
Offline Offline

Сообщений: 134



Просмотр профиля
« Ответ #12 : Август 21, 2012, 15:20 »

Может пробелы перед текстом добавлять?) Но это если фикс размер, а так кривовато)
Две QLabel неплохо, но может лучше две QPushButton? Но в этом случае с обработкой клика надо будет чуточку посидеть, чтобы и кликалось как одно целое и все такое.
Записан
Serr500
Гость
« Ответ #13 : Август 21, 2012, 15:28 »

Ленивый вариант.
Выглядит красиво... Но ещё придётся добавлять функциональность кнопки.

Что-то текст на картинке не по центру кнопки. Он естессно по центру второго label.
Мне именно так и надо - центрировать текст по свободному от иконки пространству.

Может пробелы перед текстом добавлять?) Но это если фикс размер, а так кривовато)
Размер нефиксированный. Кнопка может непредсказуемо растягиваться.

Две QLabel неплохо, но может лучше две QPushButton? Но в этом случае с обработкой клика надо будет чуточку посидеть, чтобы и кликалось как одно целое и все такое.
... и ещё чтобы выглядело как одна кнопка и вид не отличался.

Да... Я думал, что требуемый функционал реализован и нужно всего лишь где-то, условно говоря, "поставить галочку", о которой я не знаю. Однако, оказалось, что не всё так просто. Видимо, всё же придётся использовать "идеологически правильный" перехват paintEvent, поскольку все остальные методы не намного проще.

Вобщем, всем спасибо. Пошёл кодить paintEvent.
Записан
sudo
Гость
« Ответ #14 : Август 21, 2012, 16:09 »

Ленивому существу не место в программировании на Qt  Улыбающийся

Неленивому существу вообще не место в программировании Веселый Не было бы ленивых программистов, не было бы ничего Веселый
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.