crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в что заменяет в 4 версии функцию 3 версии QWidget::setBackgroundMode(...)?
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
kwisp Дата 18.3.2009, 12:39
  теперь этого оказалось моло.
существует виджет владелец нескольких виджетов последние на нем размещены с помощью менеджера размещений.

необходимо чтобы область под одним из виджетом не перерисовывалась, но не просто не перерисовывалась а чтобы и виджет владелец не перерисовывался под одним из виджетов.

либо чтобы владелец не перивовывался вообще а дети его перерисовывались.
kwisp Дата 26.2.2009, 15:35
 
Цитата(Litkevich Yuriy @ 26.2.2009, 13:10) *
Ву-аля


я застрял на отсутствии setWFlags() :)
спасибо:)
Litkevich Yuriy Дата 26.2.2009, 13:10
  kwisp, скомпилял без проблем :)

сделал так:
qt3to4 test.pro
в файл проекта добавилась строчка QT += qt3support
затем в main.cpp поменял:
this->setWFlags(Qt::WNoAutoErase)
на:
this->setWindowFlags(Qt::WNoAutoErase);

и всё
-------------------------


ага, а в четверке это решается совсем просто:
class DistinctiveWidget:public QWidget {
    public:
        DistinctiveWidget(QWidget* parent=0):QWidget(parent) 
        {
            //this->setWindowFlags(Qt::WNoAutoErase);
            //this->setBackgroundMode(Qt::NoBackground);
        }
    protected:
    void paintEvent(QPaintEvent* ev)
    {
        std::cout<<__LINE__<<"\n";
    }
};

int main(int a,char** b)
{
    QApplication app(a,b);
    DistinctiveWidget dww;
//    app.setMainWidget(&dww);
    dww.setUpdatesEnabled(false); // ADDed
    dww.show();
    return app.exec();
}
Ву-аля ;)
kwisp Дата 26.2.2009, 12:07
  Litkevich Yuriy,
нет к сожалению.

вот смотри. как мне объяснили что я должен сделать. необходимо сделать так тчобы появлялось окно в котором какаято группа виджетов из них какой то полностью неперерисовывается. ты двигаешь окно а виджет который не перирисовывается показывает в своей области то что было в ней до движения....т.е. если сделать его в центре а вокруг обычные виджеты, то придвижении виджет будет показывать рисунок виджетов в сторону которых двидется, т.к. думаю при перерисовке в движении виджеты не стирают за собой область.... если стирают то он будет полностью прозрачным при появлении и движении но если к примеру переркрыть окно и сей странный виджет другим окном а потом последнее скрыть то в сем странном виджете останеться кусок изображения перекрывавшего окна.

извини сложно объяснить...
если проще...
то наверное мне нужно чтоб не вызывался paintEvent.

хотя я не верно сказал при перемещении за перирисовку отвечает система. при перемещении изображение в сем странном виджете должно перемещаться с ним.
это остается верно
если к примеру переркрыть окно и сей странный виджет другим окном а потом последнее скрыть то в сем странном виджете останеться кусок изображения перекрывавшего окна.

код на 3 версии
Раскрывающийся текст
#include <qapplication.h>
#include <qlabel.h>
#include <qwidget.h>
#include <qfont.h>
#include <qobject.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <iostream>

class DistinctiveWidget:public QWidget {
    public:
        DistinctiveWidget(QWidget* parent=0):QWidget(parent) 
        {
            this->setWFlags(Qt::WNoAutoErase);
            this->setBackgroundMode(Qt::NoBackground);
        }
    protected:
    void paintEvent(QPaintEvent* ev)
    {
        std::cout<<__LINE__<<"\n";
    }
};

int main(int a,char** b)
{
    QApplication app(a,b);
    DistinctiveWidget dww;
    app.setMainWidget(&dww);
    dww.show();
    return app.exec();
}


как на 4 такое написать?
Litkevich Yuriy Дата 26.2.2009, 11:54
 
Цитата(kwisp @ 26.2.2009, 14:30) *
а надо чтоб он вообще не перерисовывал область...
QWidget::autoFillBackground, оно?
kwisp Дата 26.2.2009, 11:30
  вот есть QWidget::setAttribute(WA_OpaquePaintEvent);
но это немного не то он непрозрачную черную областьрисует а надо чтоб он вообще не перерисовывал область...
сейчас QPalette посмотрю.

....

QWidget::setAttribute(WA_OpaquePaintEvent);
QWidget::setAttribute(WA_NoSystemBackground);

работают одинаково хотя написано что второе должно приводить к тому что будет видно что под обласью виджета.:(
Litkevich Yuriy Дата 26.2.2009, 11:27
  я думаю это из области палитры:
QPalette::ColorRole
Qt::WA_NoSystemBackground
и т.п.
kwisp Дата 26.2.2009, 10:46
  void QWidget::setBackgroundMode ( Qt::BackgroundMode widgetBackground, Qt::BackgroundMode paletteBackground = Qt::PaletteBackground )

что в 4 версии???

вообще мне необходимо заставить неперерисовывать виджет вообще....
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 17:05