Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: pakulo от Июнь 08, 2007, 18:34



Название: Вызвать у всех виджетом изменения стиля
Отправлено: pakulo от Июнь 08, 2007, 18:34
Как можно сделать, что бы для всех виджетов сработало событие изменения стиля, так как происходит когда делаешь setStyle();


Название: Вызвать у всех виджетом изменения стиля
Отправлено: Racheengel от Июнь 08, 2007, 20:10
а чем вызов setStyle() не устраивает?


Название: Вызвать у всех виджетом изменения стиля
Отправлено: Hellraiser от Июнь 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 от Июнь 08, 2007, 20:15
Цитировать
а чем вызов setStyle() не устраивает?


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

В таком случае я бы пользовался findChild(). Но все надо проверить.


Название: Вызвать у всех виджетом изменения стиля
Отправлено: kitov от Июнь 08, 2007, 21:02
Ну тады QApplication::setStyle


Название: Вызвать у всех виджетом изменения стиля
Отправлено: pakulo от Июнь 08, 2007, 23:54
Я так и делаю, QApplication::setStyle...
Устанавливаю свой стиль главным, но в ходе выполнения программы можно изменить некоторые элементы, и что бы не создавать заново обьект моего класса, желательно вызвать для всех виджетов перерисовать себя, т.е. сэмулировать искуственно изменения стиля


Название: Вызвать у всех виджетом изменения стиля
Отправлено: kitov от Июнь 09, 2007, 09:55
Что то я не совсем понял .
Зачем заново создавать объект класса ?
Можно же в любое время выполнить QApplication::setStyle ?
или я  ошибаюсь ?


Название: Вызвать у всех виджетом изменения стиля
Отправлено: pakulo от Июнь 09, 2007, 14:22
Я создал свой стиль, в начале программы поставил QApplication::setStyle(мой стиль)...
Но во время выполнения я могу изменить, например, скин программы, за все отвечает мой созданный стиль и мне нужно или удалить обьект созданный на основе моего стиля и сделать опять QApplication::setStyle() или вызвать во всех виджетах перерисовку и сэмулировать событие изменения стиля.

второй вариант лучше