我试图阻止用户退出我的包含进度条的QDialog,并实现我想覆盖QdialogcloseEvent的closeEvent,这就是我的困境开始的地方。我不知道如何向重写的closeEvent传递某种形式的确认,即我的另一个线程中的非常长的进程已经完成,现在可以接受closeEvent。在
下面是我的代码结构class TaskThread(QtCore.QThread):
taskFinished = QtCore.pyqtSignal()
def __init__(self, var1, parent=None):
QThread.__init__(self, parent)
self.sel_proj = var1
def run(self):
#very long process for var1
self.taskFinished.emit()
class progress_win(QDialog):
def closeEvent(self, event):
#if only I can pass a variable here depending on the process
#like if finished == True:
#event.accept()
#else:
#event.ignore()
event.ignore()#for now
class Window(QtGui.QMainWindow, TaskThread):
#my main window, also contains other QDialog
def progbar(self):
self.prog_win = progress_win()
self.prog_win.resize(400, 100)
self.progressBar = QtGui.QProgressBar(self.prog_win)
self.progressBar.resize(410, 25)
self.progressBar.move(15, 40)
self.progressBar.setRange(0,1)
self.prog_win.installEventFilter(self)
self.prog_win.show()
self.myLongTask = TaskThread(var1 = myDataToBeProcessed)
self.myLongTask.taskFinished.connect(self.onFinished)
def onStart(self):
self.progressBar.setRange(0,0)
self.myLongTask.start()
def onFinished(self):
self.progressBar.setRange(0,1)
self.processResult = self.myLongTask.processedVar1 #getting my result from the long process
self.prog_win.close()
我希望在进程结束时关闭Qdialog,但不希望在进程正在进行时关闭Qdialog。我可以从onFinished函数将变量传递给重写的事件吗?如果没有,那最好的办法是什么?
我经常看到的例子是:
^{pr2}$
这需要用户交互,如果有一个指南或例子,我可以遵循我想要的想法,那就太好了。在
基本上,我想忽略来自用户的progbar QDialog的关闭事件,并让类似函数的东西来处理关闭。在