我對QCompleter進行了子分類,給它一些特殊的功能。我希望激活()被激發時,只有一個模型完成與給定的前綴,但這不是我有問題。子類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
定義: 「這種方法也是一個Qt的插槽與C++簽名void setCompletionPrefix(const QString&)
」
#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顯示爲虛擬。 –