나는 그 구현이이 FindAndReplaceBar라는 클래스를 가지고 :다중 정의 오류 : 하나는 파일에, 다른 하나는 moc 파일에 있습니다.
#include "FindAndReplaceBar.h"
#include <QLabel>
#include <QPushButton>
#include <QGridLayout>
#include <QTextDocument>
#include <QLineEdit>
FindAndReplaceBar::FindAndReplaceBar(QObject *parent) :
QToolBar(NULL)
{
lblFind = new QLabel("Find: ",this);
lblReplace = new QLabel("Replace",this);
ledtFind = new QLineEdit(this);
ledtReplace = new QLineEdit(this);
QPixmap next(":/res/resources/next.gif");
QPixmap previous(":/res/resources/previous.gif");
QPixmap close(":/res/resources/close_icon.gif");
btnFindNext = new QPushButton(QIcon(next),"",this);
btnFindPrevious = new QPushButton(QIcon(previous),"",this);
btnClose = new QPushButton(QIcon(close),"",this);
btnReplace = new QPushButton("Replace",this);
btnReplaceAll = new QPushButton("Replace All",this);
btnFindNext->setFlat(true);
btnFindPrevious->setFlat(true);
btnClose->setFlat(true);
btnReplace->setFlat(true);
btnReplaceAll->setFlat(true);
lytFindAndReplaceBar = new QGridLayout(this);
lytFindAndReplaceBar->addWidget(lblFind,0,0,1,1);
lytFindAndReplaceBar->addWidget(ledtFind,0,1,1,2);
lytFindAndReplaceBar->addWidget(btnFindPrevious,0,3,1,1);
lytFindAndReplaceBar->addWidget(btnFindNext,0,4,1,1);
lytFindAndReplaceBar->addWidget(lblReplace,0,5,1,1);
lytFindAndReplaceBar->addWidget(ledtReplace,0,6,1,2);
lytFindAndReplaceBar->addWidget(btnReplace,0,8,1,1);
lytFindAndReplaceBar->addWidget(btnReplaceAll,0,9,1,1);
this->setLayout(lytFindAndReplaceBar);
connect(btnFindNext,SIGNAL(clicked()),this,SIGNAL(findNext()));
connect(btnFindPrevious,SIGNAL(pressed()),this,SIGNAL(findPrevious()));
connect(btnClose,SIGNAL(pressed()),this,SLOT(close()));
connect(btnReplace,SIGNAL(pressed()),this,SIGNAL(replace()));
connect(btnReplaceAll,SIGNAL(pressed()),this,SIGNAL(replaceAll()));
this->setStyleSheet("QToolBar{background: qlineargradient(x1:0,x2:0,y1:0,y2:1,stop:0 #fffaf0,stop:0.3 #fdf5e6)} QLineEdit{border-radius:4px;padding:2px;}");
}
void FindAndReplaceBar::findNext()
{
emit find(0);
}
void FindAndReplaceBar::findPrevious()
{
emit find(QTextDocument::FindBackward);
}
void FindAndReplaceBar::replace()
{
emit replace(false);
}
void FindAndReplaceBar::replaceAll()
{
emit replace(true);
}
QString FindAndReplaceBar::searchTerm()
{
return this->ledtFind->text();
}
QString FindAndReplaceBar::replaceTerm()
{
return this->ledtReplace->text();
}
void FindAndReplaceBar::setSearchFieldText(const QString & searchFieldText)
{
this->ledtFind->setText(searchFieldText);
}
void FindAndReplaceBar::setReplaceFieldText(const QString & replaceFieldText)
{
this->ledtReplace->setText(replaceFieldText);
}
나는 기능의 여러 정의의 문제 얻을 프로그램을 실행하면 :
findNext()
, findPrevious()
, replace()
, replaceAll()
을.
다른 정의는 moc_FindAndReplaceBar.cpp 파일에서 정의됩니다. 나는 그 문제를 어떻게 해결해야할지 모르겠다. 덕분에 정말 고맙겠습니다! 우리는 당신의 헤더 파일을 보면
시도에서 Qt는 워드 프로세서에서
전체, 정리 빌드를 수행한다. 때로는 상황이 동기화되지 않습니다. – Mat나는 그랬다. moc_FindAndReplaceBar가 제거되었고 다른 이름으로 저장하려고하는 대화 상자가 나타납니다. 나는 이름 바꾸기가 더 큰 문제를 일으킬 수 있다고 생각하여 방금 '저장'을 클릭했습니다. –
빌드 시스템이 혼란스러워 보입니다. moc 파일을 제거하여 재생성하십시오. – Mat