如果您能帮助我使用QtHelpEngine,我将不胜感激。我试过几种方法,结果各不相同。下面是我觉得最直观的代码,但我遇到了线程问题。我现在遇到的问题是使用QT信号以正确的顺序执行必要的操作。在
我得到的错误是:
QObject: Cannot create children for a parent that is in a different thread. (Parent is QHelpEngine(0x226f6143780), parent's thread is QmlSearch(0x226f61382a0), current thread is QThread(0x226f61bda80)
如果有人能帮我解决这个问题,我会很感激的。在
谢谢!在
from PyQt5 import QtHelp, QtCore
import sys
import time
class QmlSearch(QtCore.QThread):
def run(self):
# setup help engine
qhcPath = 'C:/Users/jonoa/Documents/TEST.qhc' # just a temporary test file
self.qmlHelp = QtHelp.QHelpEngine(qhcPath)
self.qmlHelp.setupFinished.connect(self.onSetupFinished)
self.qmlHelp.setupData()
def onSetupFinished(self):
print('setup finished')
# when setup is finished register documentation
path2 = 'C:/Program Files/QT/Docs/Qt-5.7/qtquick.qch' # an example test file
self.qmlHelp.registerDocumentation(path2)
# Then setup the search engine
self.qmlSearch = self.qmlHelp.searchEngine() # This is where the script breaks.
self.qmlSearch.reindexDocumentation()
def onIndexFinished(self):
print('indexing finished')
# create search query and perform search
query = QtHelp.QHelpSearchQuery(0, ['rectangle'])
self.qmlSearch.searchingFinished.connect(self.onSearchFinished)
self.qmlSearch.search([query])
def onSearchFinished(self):
print('search finished')
# print some of the hits and finish
print([a for a in self.qmlSearch.hits(0, self.qmlSearch.hitCount()) if 'rectangle' in a[1].lower()])
self.finished.emit()
if __name__ == '__main__':
app = QtCore.QCoreApplication(sys.argv)
thread = QmlSearch()
thread.finished.connect(app.exit)
thread.start()
sys.exit(app.exec_())
目前没有回答
相关问题 更多 >
编程相关推荐