Why I get "QTimer can only be used with threads started with QThread" messages if I have no QTimer in my code?
multiplatform, pyqt4, python, qtimer
Solution
I've had similar problems in the past.
The `QFileSystemModel`documentation page says the following:
`QFileSystemModel.__init__ (self, QObject parent = None)`
The parent argument, if not None, causes self to be owned by Qt instead of PyQt.
Constructs a file system model with the given parent.
If you don't pass a `parent` argument then the Python garbage collector can delete the object at the wrong time and as a side effect raise the error you mention. My advise is to make sure that your objects have a proper parent. I think it should fix the problem.
PS: I haven't checked the docs for every class you use. Maybe `QFileSystemModel` is not the only class on which this thing happens.
Problem
When (and only when) I quit my application, these (and only these) repeated message appear on the command prompt: ``` QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread ``` This is quite strange for me, because I never use QTimer in my code (or QThread). In fact, no errors or crashes happen using the application, so this is not a real problem, actually. This happen in both Windows and Linux OSs. All my imports: ``` from __future__ import print_function from PyQt4.QtGui import (QApplication, QMainWindow, QFileSystemModel, QTreeView, QTableView, QAbstractItemView, QMenu, QAction, QKeyEvent) from PyQt4.QtCore import QDir, Qt, SIGNAL, QString, QFileInfo, QCoreApplication import sys ``` The main function: ``` def main(): app = QApplication(sys.argv) app.setApplicationName("QFM") app.setStyle("plastique") gui = MainWindow() gui.show() app.exec_() ``` Perhaps it could be something related to QFileSystemWatcher (used by QFileSystemModel), I guess...maybe it uses some QTimer features.