crossplatform.ru

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


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

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

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


Последние 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 Текстовая версия Сейчас: 8.7.2020, 13:32