0

私はそのようないくつかのコードを持っています:

class MyApp(Ui_MainWindow):
    def __init__(self):
        pass

    def setupUi(self, *args):
        super(MyApp, self).setupUi(*args)
        QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL(_fromUtf8("clicked()")), self.doCheck)

    def doCheck(self):
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Checking...", None, QtGui.QApplication.UnicodeUTF8))
        # Code to do real checking here... (it's a network app)
        # When check done, display result in a "QTextBrowser" 
        # ....
        # Change text of Button to "Done!"
        self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Done!", None, QtGui.QApplication.UnicodeUTF8))

しかし、結果は私が期待したものではありません。私のアプリはネットワークチェックを行い、結果を正常に表示しますが、チェックの開始時にボタンのテキストが「チェック中...」に変わりませんでした。テキストを「Done!」に変更するだけです。すべてが終わったら!

4

1 に答える 1

2

QApplication::processEvents()ボタンのラベルを変更した後、新しいラベルで UI を更新するために実行する必要があります。

長いタスクの実行中は UI がフリーズすることに注意してください。これを回避するにはQApplication::processEvents()、長時間の操作中に呼び出すか、この操作を別の で実行する必要がありますQThread

于 2012-05-26T06:05:45.303 に答える