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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вызвать у всех виджетом изменения стиля  (Прочитано 5158 раз)
pakulo
Гость
« : Июнь 08, 2007, 18:34 »

Как можно сделать, что бы для всех виджетов сработало событие изменения стиля, так как происходит когда делаешь setStyle();
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


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


Просмотр профиля
« Ответ #1 : Июнь 08, 2007, 20:10 »

а чем вызов setStyle() не устраивает?
Записан

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 не волк, в лес не уйдёт
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #2 : Июнь 08, 2007, 20:14 »

Код:
QMainWindow myWindow;
QStyle *myStyle = new MyStyle();
myWindow.setStyle(myStyle);
QList<QWidget *> widgets = qFindChildren<QWidget *>(&myWindow);
foreach (QWidget *w, widgets)
        w->setStyle(myStyle);

Вообще-то, все это есть в стандартных Demos
Записан
goer
Гость
« Ответ #3 : Июнь 08, 2007, 20:15 »

Цитировать
а чем вызов setStyle() не устраивает?


Есть подозрения что он устанавливает стиль только для текущего виджета (но не для дочерних например).

В таком случае я бы пользовался findChild(). Но все надо проверить.
Записан
kitov
Гость
« Ответ #4 : Июнь 08, 2007, 21:02 »

Ну тады QApplication::setStyle
Записан
pakulo
Гость
« Ответ #5 : Июнь 08, 2007, 23:54 »

Я так и делаю, QApplication::setStyle...
Устанавливаю свой стиль главным, но в ходе выполнения программы можно изменить некоторые элементы, и что бы не создавать заново обьект моего класса, желательно вызвать для всех виджетов перерисовать себя, т.е. сэмулировать искуственно изменения стиля
Записан
kitov
Гость
« Ответ #6 : Июнь 09, 2007, 09:55 »

Что то я не совсем понял .
Зачем заново создавать объект класса ?
Можно же в любое время выполнить QApplication::setStyle ?
или я  ошибаюсь ?
Записан
pakulo
Гость
« Ответ #7 : Июнь 09, 2007, 14:22 »

Я создал свой стиль, в начале программы поставил QApplication::setStyle(мой стиль)...
Но во время выполнения я могу изменить, например, скин программы, за все отвечает мой созданный стиль и мне нужно или удалить обьект созданный на основе моего стиля и сделать опять QApplication::setStyle() или вызвать во всех виджетах перерисовку и сэмулировать событие изменения стиля.

второй вариант лучше
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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