QCompleterをサブクラス化して、いくつかの特別な機能を追加します。私は与えられた接頭辞を持つモデルに完了が1つしかないときに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
定義:
#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も仮想として表示されません。 –