QCompleter를 하위 클래스로 분류하여 일부 특수 기능을 제공합니다. 주어진 접두사가있는 모델에 단 하나의 완성이있을 때 activated()가 실행되기를 원하지만, 문제가있는 곳이 아닌 것입니다.하위 클래스 QCompleter, 하위 클래스의 가상 슬롯이 호출되지 않음
내 하위 클래스에서 가상 setCompleterPrefix()를 만들었지 만 컴파일러가이를 인식하지 못하는 것 같습니다. 대신 기본 QCompleter :: setCompletionPrefix()는 사용자가 접두사를 입력 할 때 호출됩니다. 내가 뭔가 잘못하고 있는거야?
#ifndef INSTANTCOMPLETER_H
#define INSTANTCOMPLETER_H
#include <QCompleter>
namespace Reliant
{
class InstantCompleter : public QCompleter
{
Q_OBJECT
public:
explicit InstantCompleter(QObject* parent = 0);
private:
signals:
public slots:
virtual void setCompletionPrefix(const QString &prefix);
};
}
#endif // INSTANTCOMPLETER_H
정의 : : 여기
내 클래스입니다. "이 방법은 또한 C++ 서명void setCompletionPrefix(const QString&)
와 Qt는 슬롯은"이에 따라
#include "instantcompleter.h"
using Reliant::InstantCompleter;
InstantCompleter::InstantCompleter(QObject* parent) :
QCompleter(parent)
{
}
void InstantCompleter::setCompletionPrefix(const QString &prefix)
{
int completionCount = this->completionCount();
if(completionCount == 1 && setCurrentRow(0))
emit activated(currentCompletion());
else
QCompleter::setCompletionPrefix(prefix);
}
+1 http://doc.qt.nokia.com/latest/qcompleter.html도 가상으로 setCompletionPrefix를 표시하지 않습니다. –