这是我的一段代码
#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();
}
我收到错误&#34;错误:&#39; vector&#39;未在此范围内宣布&#34; 我无法理解,我已经包含了矢量库,为什么错误仍然出现?
谢谢大家的帮助!
答案 0 :(得分:3)
添加:
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++;
}
答案 1 :(得分:1)
使用
std::vector<const char *>
使用在名称空间std ..
中声明的类向量的限定名称