Как объявить и создать экземпляр переменной в Qt? - PullRequest
0 голосов
/ 31 августа 2011

Сначала я хочу извиниться за этот глупый вопрос, но я довольно новичок в Qt, так что прости меня;)

Я рисую QPixmaps. Но из-за проблем с производительностью я хочу загрузить свой QPixmaps только один раз, чтобы использовать их снова и снова. В данный момент я загружаю их всегда, когда вызывается update, но в конструкторе должно быть возможно загрузить их только один раз. Как будет выглядеть файл .h и объявление переменных QPixmap в этом случае? Пока не могу понять.

Ответы [ 2 ]

1 голос
/ 31 августа 2011

Qt - это библиотека C ++, поэтому вы просто пишете код на C ++:

Заголовок:

class foo : public QWidget {
public:
    foo(QWidget *parent = 0);

private:
    QPixMap *bar;
};

Источник:

foo::foo(QWidget *parent) : QWidget(parent) {
    bar = new QPixMap("bar.png");
    // Some error checking...
}
0 голосов
/ 31 августа 2011

Вам может не потребоваться оптимизировать загрузку изображений: если вы загружаете их, передавая параметр имени файла в конструктор QPixmap или QPixmap::load, они автоматически кэшируются в QPixmapCache, как указано здесь .

И если вы действительно хотите сохранить QPixmap в качестве члена вашего класса, вы не должны использовать указатель, потому что, в основном:

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