이 코드에서 std::pair
에 대한 typdef
이 선언 된 다음 새 typdef를 사용하여 vector
이 작성되었습니다. 벡터는 생성자 초기화 목록에서 초기화되었습니다. 벡터에게 at(index)
기능을 사용하려고 할 때 컴파일러는이 오류를 던져 :컴파일러 오류 : std :: pair의 벡터를 사용할 때 일치하는 함수가 없습니다.
/home/user/compositionwidget/compositionwidget.cpp:53: error: no matching function for call to ‘std::vector<std::pair<QPainter::CompositionMode, QString> >::at(<unresolved overloaded function type>)’
imagePainter.setCompositionMode(comp_pair_vector.at(index).first);
^
typedef std::pair< QPainter::CompositionMode, QString > comp_pair ;
class CompositionWidget : public QWidget
{
Q_OBJECT
public:
CompositionWidget(QWidget * parent = 0) ;
protected:
void paintEvent(QPaintEvent *event);
private:
QImage * dest_image, *src_image ;
std::vector <comp_pair> comp_pair_vector;
comp_pair curr_composition;
};
을 compositionwidget.cpp 파일 :
CompositionWidget::CompositionWidget (QWidget *parent)
:QWidget (parent),
comp_pair_vector
{
comp_pair(QPainter::CompositionMode_Clear, "CompositionMode_Clear"),
comp_pair (QPainter::CompositionMode_ColorBurn , "CompositionMode_ColorBurn"),
comp_pair (QPainter::CompositionMode_ColorDodge , "CompositionMode_ColorDodge")
}
{
src_image = new QImage ("/home/user/compositionwidget/images/butterfly.gif") ;
}
void CompositionWidget::paintEvent(QPaintEvent * event)
{
qDebug() << "CompositionWidget::paintEvent()........" ;
QPainter imagePainter (this) ;
dest_image->scaled(size()) ;
imagePainter.drawPixmap(0,0, width(), height(),
QPixmap::fromImage(*dest_image));
src_image->scaled(size()) ;
imagePainter.setCompositionMode(comp_pair_vector.at(index).first);
imagePainter.drawPixmap(0,0, width(), height(),
QPixmap::fromImage(*src_image));
}
'index'는 어디에서 왔습니까? – Kamajii