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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Автоматическое изменение размера иконки кнопки  (Прочитано 2570 раз)
kolts
Гость
« : Октябрь 19, 2015, 00:38 »

Есть несколько кнопок на форме. Кнопки могут менять размер. Как сделать так, чтоб автоматически менялись иконки при изменении размера кнопок.
Пока сделал через eventFilter
bool eventFilter(QObject *o, QEvent *e)
{
   if(e->type() == QEvent::Resize)
    {
        QPushButton *button = qobject_cast<QPushButton*>(o);
        if(button)
        {
            button->setIconSize(QSize(
                  button->icon().actualSize(button->size()).width() - 10,
                  button->icon().actualSize(button->size()).height() - 10));
        }
        else return false;
    }
    return false;
}
-10 потому что кнопка расширяется больше чем надо.
За временное решение сойдет, но может есть более умный и легкий способ?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Октябрь 19, 2015, 01:23 »

Переопределить QPushButton и в него засунуть корректировку размера иконок.
Через eventFilter, по мне, проще будет Улыбающийся
Записан

kolts
Гость
« Ответ #2 : Октябрь 19, 2015, 01:41 »

Цитировать
Через eventFilter, по мне, проще будет
Мой способ?Мутный он какой то, у меня есть кнопка которая скрывает и показывает виджет на форме, за счет этого эти самые кнопки с иконками изменяются в размере, так всю форму аж передергивает. Потому что от размера иконки зависит размер кнопки. Но как временное решение сойдет
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #3 : Октябрь 19, 2015, 02:33 »

Переопределить QPushButton и в него засунуть корректировку размера иконок.

+1
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
kolts
Гость
« Ответ #4 : Октябрь 19, 2015, 10:45 »

void PushButton::resizeEvent(QResizeEvent *e)
{
    setIconSize(icon().actualSize(QSize(
                                  e->size().width() - 10,
                                  e->size().height() - 10)));
    QPushButton::resizeEvent(e);

}
Переопределил класс QPushButton, переопределил resizeEvent. Оставлю так но поведение примерно такое же.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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