Видео ролики бесплатно онлайн

Смотреть фильмы бесплатно

Официальный сайт isprras 24/7/365

Смотреть видео бесплатно

magist3r 04.10.2011 12:54

Есть вопрос![Qt] Инициализация QImage как переменной класса.

Добрый день, уважаемое сообщество. Столкнулся тут со следующей проблемой. Долго и упорно гуглил, но ничего не нашел.

Итак, есть класс-наследник QWidget:
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class PaintArea : public QWidget
{
Q_OBJECT

public:
PaintArea(QWidget *parent = 0);

void drawImage(Profile *profile);

signals:
void addToDebugConsole(QString text);

private:
bool toPaint;
QImage image;

protected:
void paintEvent(QPaintEvent *);
};


Вопрос такой: как грамотно инициализировать переменную image? Сейчас приходится использовать костыль вида:
1
2
QImage image1(width(), height(), QImage::Format_ARGB32_Premultiplied);
image = image1;


Заранее благодарю за помощь.


Тэги:
+ 0 -
Похожие Поделиться

dront78 04.10.2011 21:31 #
+ 0 -
прочитайте про списки инициализации конструктора
kstep 06.10.2011 04:32 #
+ 0 -
1
image = new QImage(width(), height(), QImage::Format_ARGB32_Premultiplied)



Не?
tvv 06.10.2011 09:25 #
+ 0 -
Не (:
Для варианта с нью член image указателем должен быть, да ещё придётся заботиться об удалении объекта.
Ой как прав был тов. dront78 -- достаточно вот так описать конструктор:

1
2
3
4
5
PaintArea::PaintArea(/*...*/) :
image(/*...*/)
{
/* ctor code */
}

kstep 06.10.2011 15:12 #
+ 0 -
Мда, давно я на плюсах не писал.
magist3r 06.10.2011 16:39 #
+ 0 -
на самом деле вот так отлично работает:
1
image = QImage(width(), height(), QImage::Format_ARGB32_Premultiplied);

tvv 06.10.2011 17:25 #
+ 0 -
Тот же костыль, что и в посте. Отличие только в неявном создании объекта. Минусы подхода: 1) работа с кучей (не всегда можно успешно создать объект из-за нехватки памяти -- хотя врядли актуально для данной системы) 2) вызов конструктора копирования.

Имхо, мовитон для плюсов. Списки инициализации для таких дел и предназначены.
magist3r 06.10.2011 16:41 #
+ 0 -
А вот про это вообще не понял. Что делает этот код?
tvv 06.10.2011 17:34 #
+ 0 -
Окей. Для копипаста.
Определение конструктора класса PaintArea (обычно находится в cpp-файле):
1
2
3
4
PaintArea::PaintArea(QWidget *parent/* = 0*/) :
image(width(), height(), QImage::Format_ARGB32_Premultiplied) {
/* здесь должен находиться код конструктора */
}

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн