Вот моя часть кода
#include <stdio.h>
#include "W.h"
#include <QtGui/QApplication>
#include <QtGui/QPushButton>
#include <QtGui/QFont>
#include <QtGui/QWidget>
#include <QtGui/QLabel>
#include <QtGui/QImage>
#include <QtGui/QPainter>
#include <opencv/highgui.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <QTimer>
#include <QImage>
#include <string>
#include <vector>
void PainterWidget::paintEvent(QPaintEvent* event) {
vector <const char*> p;
p.push_back("01.jpg");
p.push_back("02.jpg");
p.push_back("03.jpg");
p.push_back("04.jpg");
p.push_back("05.jpg");
counter=counter%5;
QImage img= QImage(p[counter]);
QPainter painter(this);
painter.drawImage(0,0,img);
counter++
p.clear();
}
Я получаю ошибку "error:" vector "не был объявлен в этой области" Я не могу понять, я уже включил векторную библиотеку, почему ошибка все еще появляется?
Спасибо всем за помощь!
Добавить:
using namespace std;
Или префиксный vector
с std::
Кстати, вы можете оптимизировать свой код, создавая и заполняя вектор только один раз. Нет смысла делать это для каждого события краски. Кроме того, нет необходимости явно очищать свой вектор, когда это делается, его деструктор (называемый автоматически в вашем случае) делает это.
static std::vector<std::string>& images()
{
static std::vector<std::string> imagesVect;
if ( imagesVect.empty() )
{
imagesVect.push_back("01.jpg");
imagesVect.push_back("02.jpg");
imagesVect.push_back("03.jpg");
imagesVect.push_back("04.jpg");
imagesVect.push_back("05.jpg");
}
return imagesVect;
}
void PainterWidget::paintEvent(QPaintEvent* event) {
counter=counter%5;
QImage img= QImage(images().[counter].c_str());
QPainter painter(this);
painter.drawImage(0,0,img);
counter++;
}
использование
std::vector<const char *>
то есть использовать квалифицированное имя класса, объявленного в пространстве имен std..
std::vector
.