Я хотел бы использовать QSet
настроенного объекта. Из документации я узнал, что:
Тип данных значения QSet должен быть назначаемым типом данных. Вы не можете, например, сохранить QWidget как значение; вместо этого сохраните QWidget *. Кроме того, тип должен предоставлять operator == (), а также должна быть глобальная функция qHa sh (), которая возвращает значение ha sh для аргумента типа ключа. См. Документацию QHa sh для списка типов, поддерживаемых qHa sh ().
Следующий код представляет struct
, который я хотел бы использовать:
typedef struct ShortcutItem
{
QString shortcutName; // A shortcut name
QString explaination; // A shortcut explaination
bool editable; // Is editable
KeySequence sequence; // A list of key values defining a shortcut
ShortcutItem(void) {}
ShortcutItem(QString& name, QString& description, bool enabled, KeySequence seq) : shortcutName(name), explaination(description), editable(enabled), sequence(seq) {}
ShortcutItem(const ShortcutItem& other) : shortcutName(other.shortcutName), explaination(other.explaination), editable(other.editable), sequence(other.sequence) {}
bool ShortcutItem::operator==(const ShortcutItem& other) const { return shortcutName == other.shortcutName; }
} ShortcutItem;
До сих пор я перегрузил оператор ==
, но не могу определить, что делать с функцией qHash()
.
Любая помощь, пожалуйста.
PS Я видел этот пост и не может решить, что делать.