Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: IGHOR от Март 16, 2008, 23:48



Название: QFrame update
Отправлено: IGHOR от Март 16, 2008, 23:48
Привет Всем.
Я написал прогу под виндой (Qt4.3.4), и все работает чудесно.
Скомпилил ее под линух и очень заметно мерцание между переходами фреймов и всех обьектов к которым применяю setVisible(true/false).
Можед двойная буферизация отключена ?
Как поправить это ?


Название: Re: QFrame update
Отправлено: lit-uriy от Март 17, 2008, 09:14
может это то, что тебе надо: Быстро и без мерцаний (http://crossplatform.ru/?q=node/53)


Название: Re: QFrame update
Отправлено: IGHOR от Март 19, 2008, 00:38
Пробую, спасибо!


Название: Re: QFrame update
Отправлено: IGHOR от Март 19, 2008, 03:15
Должно быть решением Qt::WRepaintNoErase
но как это использовать ?


Название: Re: QFrame update
Отправлено: lit-uriy от Март 19, 2008, 03:51
сильно извиняюсь, я тебя не вту сторону отправл, эта статья относительно Qt3, и флаг устаревший :(

в асистенете глянь Qwidget, раздел transparency-and-double-buffering, вот в онлайне (http://www.crossplatform.ru/documentation/qtdoc4.3/qwidget.php#transparency-and-double-buffering), из всего что связано с отбражением я только с autoFillBackground эксперементировал, он поумолчанию выключен


Название: Re: QFrame update
Отправлено: IGHOR от Март 20, 2008, 00:38
autoFillBackground не помагает,
я еще выложил скриншоты во сдесь http://www.qtforum.org/thread.php?threadid=24387
Что ни у кого не было с этим проблем ?


Название: Re: QFrame update
Отправлено: lit-uriy от Март 20, 2008, 05:57
Что ни у кого не было с этим проблем ?
да больше двух я не применял и использовал QStackedWidget проблем небыло, а ты, кстати, используешь QStackedWidget?


Название: Re: QFrame update
Отправлено: IGHOR от Март 20, 2008, 19:53
Нашел решение,
Вот:
Код:
updatesEnabled : bool

This property holds whether updates are enabled.

An updates enabled widget receives paint events and has a system background; a disabled widget does not. This also implies that calling update() and repaint() has no effect if updates are disabled.

setUpdatesEnabled() is normally used to disable updates for a short period of time, for instance to avoid screen flicker during large changes. In Qt, widgets normally do not generate screen flicker, but on X11 the server might erase regions on the screen when widgets get hidden before they can be replaced by other widgets. Disabling updates solves this.

Example:
setUpdatesEnabled(false);
bigVisualChanges();
setUpdatesEnabled(true);

Disabling a widget implicitly disables all its children. Enabling respectively enables all child widgets unless they have been explicitly disabled. Re-enabling updates implicitly calls update() on the widget.

Access functions:
bool updatesEnabled () const
void setUpdatesEnabled ( bool enable )

Может комуто пригодится..
Удачи Всем!