Kimin uygulama şudur FindAndReplaceBar denilen bir sınıf vardır:Birden çok tanım hatası: dosyamda biri ve moc dosyasında bir tane var.
#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);
}
Ben fonksiyonların birden tanımların sorunları olsun programı çalıştırdığınızda:
findNext()
, findPrevious()
, replace()
, replaceAll()
.
Diğer tanım moc_FindAndReplaceBar.cpp dosyasında yapılmıştır. Sorunun ne olduğundan emin değilim, nasıl düzelteceğimi bilmiyorum! Herhangi bir yardım için minnettar olurum, teşekkürler! biz başlık dosyasına bakarsanız
deneyin Qt Dokümanlar
tam, temiz bir yapı yapmak. Bazen işler senkronize olur. – MatYaptım. Moc_FindAndReplaceBar'ın kaldırıldığına ve farklı bir adla kaydetmek istediğime dair bir iletişim var. Yeniden adlandırmanın daha büyük sorunlar yaratabileceğini düşündüm, bu yüzden 'Kaydet'e tıkladım' –
Yapım sisteminizin kafası karışmış gibi görünüyor. Moc dosyalarını yeniden üretilecek şekilde kaldırın. – Mat