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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Размер иконок QToolBar в Qt 4.1.0  (Прочитано 11951 раз)
Turing
Гость
« : Февраль 02, 2006, 08:28 »

В Qt 4.1.0 изменили стандартный размер иконок QToolBar.
Решил уменьшить их.

Код:
toolBar->setIconSize(QSize(8, 8));

не работает !!!

Код:
int extent;
QStyle::PixelMetric metric;
metric = QStyle::PM_SmallIconSize;
extent = QApplication::style()->pixelMetric(metric);
toolBar->setIconSize(QSize(extent, extent));

не работает!!!

Может я что-то не так делаю???
Записан
nEoN
Гость
« Ответ #1 : Февраль 02, 2006, 09:58 »

Я нашёл только одно решение - исправить в исходниках Qt одну константу 24 -> 16 и пересобрать Qt.

Для стилей windows/windowsXP файл Qt\4.1.0\src\gui\styles\qwindowsstyle.cpp
Код:
int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QWidget *widget) const
{
...
    case PM_ToolBarIconSize:
//        ret = 24;
        ret = 16;
        break;
...
}
Записан
Steven_Orko
Гость
« Ответ #2 : Февраль 02, 2006, 16:06 »

Вообще, я изменял размер иконок QToolBar через  setIconSize(QSize(16, 16));

добавлено спустя 57 секунд:

 Так что пересобирать, а уж тем более изменять исходники Qt, не надо  Веселый
Записан
nEoN
Гость
« Ответ #3 : Февраль 02, 2006, 16:08 »

В 4.1 под WinXP это не работает.
Записан
Steven_Orko
Гость
« Ответ #4 : Февраль 02, 2006, 16:31 »

А ты где это пишешь? Надо в конструкторе. У меня и под 4.1 и под 4.0.1 в XP работает. Твой виджет с тулбаром - это QMainWindow?

добавлено спустя 12 минут:

 
Цитата: "nEoN"
В 4.1 под WinXP это не работает.


Если уж на то пошло, чтобы изменять исходные коды, то, ИМХО, лучше тогда уж написать свой класс, наследовав его от упомянутых тобою стилей. А в нем уже переопределить функцию pixelMetric() так, чтобы именно для QToolBar она возвращала необходимый размер. Изменять исходники - это крайнее дело, и совсем некрасивое, так как потом, когда выйдет обновленная версия, твоя прога может минимум работать неправильно.
Записан
nEoN
Гость
« Ответ #5 : Февраль 02, 2006, 16:34 »

По всякому пробовал, в Qt 4.1.0 кнопки на тулбарах остаются большими (24x24).

Например берём стандартный Qt-шный пример c:\Qt\4.1.0\examples\mainwindows\application.
Добавляем в конструктор главного окна setIconSize(QSize(16, 16)) :
Код:
MainWindow::MainWindow()
{
setIconSize(QSize(16, 16));
...
}

Пересобираем пример, и в результате ничего не меняется, кнопки на тулбаре остаётся такими же большими  :?.
Записан
Steven_Orko
Гость
« Ответ #6 : Февраль 02, 2006, 16:38 »

Вообще, честно говоря, странно. Я просто недавно, как позавчера все выбирал, какие размеры мне лучше оставить (24 или 16). И вот щас пересобрал прогу, вроде все ок. Надо поглубже посмотреть. Можеть еще что менял. Но точно, не через стили.
Записан
nEoN
Гость
« Ответ #7 : Февраль 02, 2006, 16:49 »

Цитата: "Steven_Orko"
Если уж на то пошло, чтобы изменять исходные коды, то, ИМХО, лучше тогда уж написать свой класс, наследовав его от упомянутых тобою стилей. А в нем уже переопределить функцию pixelMetric() так, чтобы именно для QToolBar она возвращала необходимый размер. Изменять исходники - это крайнее дело, и совсем некрасивое, так как потом, когда выйдет обновленная версия, твоя прога может минимум работать неправильно.

По поводу Qt-шных исходников полностью с тобой согласен, изменять их крайне не желательно.
Эту правку я использую как временное решение, которое не несёт за собой никаких последствий. Думаю в следущей версии они эту проблему исправят.

добавлено спустя 7 минут:

 Кстати, вот он этот баг в Task Tracker'e у тролей :
http://www.trolltech.com/developer/tasktracker.html?method=entry&id=97137
Resolution: Fixed
Scheduled for: 4.1.1
Записан
Steven_Orko
Гость
« Ответ #8 : Февраль 02, 2006, 17:01 »

Дело в том, у меня до последнего момента, пока я не пересобрал проект полностью, это работало. А теперь тоже не имеет эффекта. (((
Записан
nEoN
Гость
« Ответ #9 : Февраль 02, 2006, 17:11 »

Цитата: "Steven_Orko"
Дело в том, у меня до последнего момента, пока я не пересобрал проект полностью, это работало. А теперь тоже не имеет эффекта. (((

Может до этого библиотеки не от Qt 4.1, а от Qt 4.0.1 поцеплялись.
Записан
Steven_Orko
Гость
« Ответ #10 : Февраль 02, 2006, 18:15 »

Я тоже так подумал, но когда поменял версию Qt, все осталось неизменным. Пересборка проекта непомогла. Странно. Буду разбираться...
Записан
Tirex
Гость
« Ответ #11 : Февраль 15, 2006, 20:28 »

та же проблема пишу на Xp, под VS 2003 .net не менется размер ни в QTDesigner и в коде, никакой реакции, как решить проблему можно?
Записан
Steven_Orko
Гость
« Ответ #12 : Февраль 15, 2006, 22:47 »

Цитата: "Tirex"
та же проблема пишу на Xp, под VS 2003 .net не менется размер ни в QTDesigner и в коде, никакой реакции, как решить проблему можно?

Ждать следующей версии.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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