我有一个名为 FindAndReplaceBar 的类,它的实现是这样的:
#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 文件中进行。我不确定是什么问题,所以我不知道如何解决它!我真的很感激任何帮助,谢谢!