crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> что заменяет в 4 версии функцию 3 версии QWidget::setBackgroundMode(...)?
kwisp
  опции профиля:
сообщение 26.2.2009, 10:46
Сообщение #1


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


void QWidget::setBackgroundMode ( Qt::BackgroundMode widgetBackground, Qt::BackgroundMode paletteBackground = Qt::PaletteBackground )

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

вообще мне необходимо заставить неперерисовывать виджет вообще....

Сообщение отредактировал kwisp - 26.2.2009, 11:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.2.2009, 11:27
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


я думаю это из области палитры:
QPalette::ColorRole
Qt::WA_NoSystemBackground
и т.п.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.2.2009, 11:30
Сообщение #3


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


вот есть QWidget::setAttribute(WA_OpaquePaintEvent);
но это немного не то он непрозрачную черную областьрисует а надо чтоб он вообще не перерисовывал область...
сейчас QPalette посмотрю.

....

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

работают одинаково хотя написано что второе должно приводить к тому что будет видно что под обласью виджета.:(

Сообщение отредактировал kwisp - 26.2.2009, 11:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.2.2009, 11:54
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kwisp @ 26.2.2009, 14:30) *
а надо чтоб он вообще не перерисовывал область...
QWidget::autoFillBackground, оно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.2.2009, 12:07
Сообщение #5


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


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 такое написать?

Сообщение отредактировал kwisp - 26.2.2009, 12:23
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.2.2009, 13:10
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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, 15:35
Сообщение #7


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(Litkevich Yuriy @ 26.2.2009, 13:10) *
Ву-аля


я застрял на отсутствии setWFlags() :)
спасибо:)

Сообщение отредактировал kwisp - 26.2.2009, 15:35
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 18.3.2009, 12:39
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


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

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

либо чтобы владелец не перивовывался вообще а дети его перерисовывались.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.3.2024, 18:22