diff --git a/src/plugins/cpptools/searchsymbols.cpp b/src/plugins/cpptools/searchsymbols.cpp
index c0d29aae18a7fabde085f4a5e129abd1e4fb7539..4b1e48abdf7e55a3d3326d0ed0ca5b59686aadee 100644
--- a/src/plugins/cpptools/searchsymbols.cpp
+++ b/src/plugins/cpptools/searchsymbols.cpp
@@ -40,13 +40,13 @@ using namespace CPlusPlus;
 using namespace CppTools::Internal;
 
 SearchSymbols::SearchSymbols():
-    symbolsToSearchFor(ClassesMethodsFunctionsAndEnums)
+    symbolsToSearchFor(Classes | Functions | Enums)
 {
 }
 
-void SearchSymbols::setSymbolsToSearchFor(SymbolType type)
+void SearchSymbols::setSymbolsToSearchFor(SymbolTypes types)
 {
-    symbolsToSearchFor = type;
+    symbolsToSearchFor = types;
 }
 
 QList<ModelItemInfo> SearchSymbols::operator()(Document::Ptr doc, const QString &scope)
@@ -69,7 +69,7 @@ QString SearchSymbols::switchScope(const QString &scope)
 
 bool SearchSymbols::visit(Enum *symbol)
 {
-    if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums)
+    if (!(symbolsToSearchFor & Enums))
         return false;
 
     QString name = symbolName(symbol);
@@ -89,7 +89,7 @@ bool SearchSymbols::visit(Enum *symbol)
 
 bool SearchSymbols::visit(Function *symbol)
 {
-    if (symbolsToSearchFor != ClassesMethodsFunctionsAndEnums)
+    if (!(symbolsToSearchFor & Functions))
         return false;
 
     QString name = symbolName(symbol);
@@ -131,6 +131,9 @@ bool SearchSymbols::visit(Declaration *symbol)
 
 bool SearchSymbols::visit(Class *symbol)
 {
+    if (!(symbolsToSearchFor & Classes))
+        return false;
+
     QString name = symbolName(symbol);
     QString previousScope = switchScope(name);
     QIcon icon = icons.iconForSymbol(symbol);
diff --git a/src/plugins/cpptools/searchsymbols.h b/src/plugins/cpptools/searchsymbols.h
index d9b678e026fb6778ada898736a45ea3936e571e2..948f9d78e84ea72898f3e1b87f8baf6f26edac88 100644
--- a/src/plugins/cpptools/searchsymbols.h
+++ b/src/plugins/cpptools/searchsymbols.h
@@ -80,15 +80,16 @@ class SearchSymbols: public std::unary_function<CPlusPlus::Document::Ptr, QList<
                      protected CPlusPlus::SymbolVisitor
 {
 public:
-    // TODO: Probably should use QFlags
     enum SymbolType {
-        Classes,
-        ClassesMethodsFunctionsAndEnums
+        Classes   = 0x1,
+        Functions = 0x2,
+        Enums     = 0x4
     };
+    Q_DECLARE_FLAGS(SymbolTypes, SymbolType)
 
     SearchSymbols();
 
-    void setSymbolsToSearchFor(SymbolType type);
+    void setSymbolsToSearchFor(SymbolTypes types);
 
     QList<ModelItemInfo> operator()(CPlusPlus::Document::Ptr doc)
     { return operator()(doc, QString()); }
@@ -117,9 +118,11 @@ private:
     CPlusPlus::Overview overview;
     CPlusPlus::Icons icons;
     QList<ModelItemInfo> items;
-    SymbolType symbolsToSearchFor;
+    SymbolTypes symbolsToSearchFor;
 };
 
+Q_DECLARE_OPERATORS_FOR_FLAGS(SearchSymbols::SymbolTypes)
+
 } // namespace Internal
 } // namespace CppTools