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.
I've had similar problems in the past.
The
QFileSystemModel
documentation page says the following: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.pass in self into the instantiation of it if you are not subclassing it like so QFileSystemModel(self)
In my experience this happens when I subclass a Qt class and one of the members of the subclass is not part of the Qt hierarchy. For example:
If I implement
MyWidget
in this way, it will give me theQTimer
error when the object is destroyed:However, if
MyWidget
inherits fromQObject
then no error occurs: