gpt4 book ai didi

qt4 - 多重定义错误 : one in my file and one in the moc file.

转载 作者:行者123 更新时间:2023-12-04 10:01:42 25 4
gpt4 key购买 nike

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

最佳答案

从你的连接调用(信号到信号)来看,我假设如果我们查看你的头文件,你会声明 findNext(), findPrevious(), replace(), replaceAll()信号 ,但是 你不能实现信号 - 他们只需要在标题中声明。

来自 signals 上的 Qt 文档

Signals are automatically generated by the moc and must not be implemented in the .cpp file. They can never have return types (i.e. use void).

关于qt4 - 多重定义错误 : one in my file and one in the moc file.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8731077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com