Я подклассифицирую 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
Определение:
#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);
}