diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 1d2aa1a2a7d95055eb3dcff1ef881b10930d7671..3e3da710ac953858c394b5eb4b10773beab3fa77 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -256,13 +256,11 @@ BaseTextEditorWidget::BaseTextEditorWidget(QWidget *parent)
     d->m_matchFormat.setForeground(Qt::red);
     d->m_matchFormat.setBackground(QColor(0xb4, 0xee, 0xb4));
     d->m_mismatchFormat.setBackground(Qt::magenta);
-    d->m_parenthesesMatchingTimer = new QTimer(this);
-    d->m_parenthesesMatchingTimer->setSingleShot(true);
-    connect(d->m_parenthesesMatchingTimer, SIGNAL(timeout()), this, SLOT(_q_matchParentheses()));
+    d->m_parenthesesMatchingTimer.setSingleShot(true);
+    connect(&d->m_parenthesesMatchingTimer, SIGNAL(timeout()), this, SLOT(_q_matchParentheses()));
 
-    d->m_highlightBlocksTimer = new QTimer(this);
-    d->m_highlightBlocksTimer->setSingleShot(true);
-    connect(d->m_highlightBlocksTimer, SIGNAL(timeout()), this, SLOT(_q_highlightBlocks()));
+    d->m_highlightBlocksTimer.setSingleShot(true);
+    connect(&d->m_highlightBlocksTimer, SIGNAL(timeout()), this, SLOT(_q_highlightBlocks()));
 
     d->m_animator = 0;
 
@@ -272,9 +270,8 @@ BaseTextEditorWidget::BaseTextEditorWidget(QWidget *parent)
     updateHighlights();
     setFrameStyle(QFrame::NoFrame);
 
-    d->m_delayedUpdateTimer = new QTimer(this);
-    d->m_delayedUpdateTimer->setSingleShot(true);
-    connect(d->m_delayedUpdateTimer, SIGNAL(timeout()), viewport(), SLOT(update()));
+    d->m_delayedUpdateTimer.setSingleShot(true);
+    connect(&d->m_delayedUpdateTimer, SIGNAL(timeout()), viewport(), SLOT(update()));
 
     d->m_moveLineUndoHack = false;
 }
@@ -1979,7 +1976,7 @@ void BaseTextEditorWidget::keyPressEvent(QKeyEvent *e)
 
     skip_event:
     if (!ro && e->key() == Qt::Key_Delete && d->m_parenthesesMatchingEnabled)
-        d->m_parenthesesMatchingTimer->start(50);
+        d->m_parenthesesMatchingTimer.start(50);
 
     if (!ro && d->m_contentsChanged && !e->text().isEmpty()
             && e->text().at(0).isPrint() && !inOverwriteMode) {
@@ -4130,7 +4127,7 @@ void BaseTextEditorWidget::updateHighlights()
         // Delay update when no matching is displayed yet, to avoid flicker
         if (extraSelections(ParenthesesMatchingSelection).isEmpty()
             && d->m_animator == 0) {
-            d->m_parenthesesMatchingTimer->start(50);
+            d->m_parenthesesMatchingTimer.start(50);
         } else {
             // when we uncheck "highlight matching parentheses"
             // we need clear current selection before viewport update
@@ -4140,7 +4137,7 @@ void BaseTextEditorWidget::updateHighlights()
 
             // use 0-timer, not direct call, to give the syntax highlighter a chance
             // to update the parentheses information
-            d->m_parenthesesMatchingTimer->start(0);
+            d->m_parenthesesMatchingTimer.start(0);
         }
     }
 
@@ -4149,7 +4146,7 @@ void BaseTextEditorWidget::updateHighlights()
     if (d->m_displaySettings.m_highlightBlocks) {
         QTextCursor cursor = textCursor();
         d->extraAreaHighlightFoldedBlockNumber = cursor.blockNumber();
-        d->m_highlightBlocksTimer->start(100);
+        d->m_highlightBlocksTimer.start(100);
     }
 }
 
@@ -4446,7 +4443,7 @@ void BaseTextEditorWidget::updateFoldingHighlight(const QPoint &pos)
     }
 
     if (highlightBlockNumber != d->extraAreaHighlightFoldedBlockNumber)
-        d->m_highlightBlocksTimer->start(d->m_highlightBlocksInfo.isEmpty() ? 120 : 0);
+        d->m_highlightBlocksTimer.start(d->m_highlightBlocksInfo.isEmpty() ? 120 : 0);
 }
 
 void BaseTextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
@@ -5029,7 +5026,7 @@ void BaseTextEditorWidget::highlightSearchResults(const QString &txt, Find::Find
                                        Qt::CaseSensitive : Qt::CaseInsensitive);
     d->m_findFlags = findFlags;
 
-    d->m_delayedUpdateTimer->start(50);
+    d->m_delayedUpdateTimer.start(50);
 }
 
 int BaseTextEditorWidget::verticalBlockSelectionFirstColumn() const
diff --git a/src/plugins/texteditor/basetexteditor_p.h b/src/plugins/texteditor/basetexteditor_p.h
index ff1fabc5578df3c26a5b0a5a7b261fca0cdcd869..7771a5e68c948a75f7452a88cbde187730dcab8a 100644
--- a/src/plugins/texteditor/basetexteditor_p.h
+++ b/src/plugins/texteditor/basetexteditor_p.h
@@ -44,6 +44,7 @@
 #include <QPointer>
 #include <QScopedPointer>
 #include <QTextBlock>
+#include <QTimer>
 
 namespace TextEditor {
 
@@ -132,7 +133,7 @@ public:
     bool m_formatRange;
     QTextCharFormat m_matchFormat;
     QTextCharFormat m_mismatchFormat;
-    QTimer *m_parenthesesMatchingTimer;
+    QTimer m_parenthesesMatchingTimer;
     // end parentheses matcher
 
     QWidget *m_extraArea;
@@ -191,7 +192,7 @@ public:
     QTextCharFormat m_currentLineFormat;
     QTextCharFormat m_currentLineNumberFormat;
     void highlightSearchResults(const QTextBlock &block, TextEditorOverlay *overlay);
-    QTimer *m_delayedUpdateTimer;
+    QTimer m_delayedUpdateTimer;
 
     BaseTextEditor *m_editor;
 
@@ -219,7 +220,7 @@ public:
 
     int visualIndent(const QTextBlock &block) const;
     BaseTextEditorPrivateHighlightBlocks m_highlightBlocksInfo;
-    QTimer *m_highlightBlocksTimer;
+    QTimer m_highlightBlocksTimer;
 
     QScopedPointer<CodeAssistant> m_codeAssistant;
     bool m_assistRelevantContentAdded;