【发布时间】:2018-02-20 18:43:00
【问题描述】:
除了退出页面之外,我想让 QWizard 上的完成按钮执行其他操作。我需要将它连接到调用另一个窗口的函数。换句话说,我需要查看 Qwizard 页面的 Finish Button 并将其添加功能。有谁知道如何做到这一点。谢谢
【问题讨论】:
除了退出页面之外,我想让 QWizard 上的完成按钮执行其他操作。我需要将它连接到调用另一个窗口的函数。换句话说,我需要查看 Qwizard 页面的 Finish Button 并将其添加功能。有谁知道如何做到这一点。谢谢
【问题讨论】:
当您按下 QPushbutton 时,您有 QWizard 对象?
如果是:
使用 SIGNAL 和 SLOT!
我不知道它在 Python 中是什么样子的,但是 c++ 是这样的:
connect(my_button, SIGNAL(clicked(), your_qwizard_object, SLOT(your_qwizard_slot()));
【讨论】:
void MainWindow::on_btnCreateWizard_clicked() {
MyWizardForm* dlg = new MyWizardForm(this);
connect(dlg, SIGNAL(_finished()), this, SLOT(slot_show_me()));
this->hide();
dlg.exec();
}
void MainWindow::slot_show_me() {
this->show();
}
void MyWizardForm::on_btnClose_Clicked() {
emit _finished();
this->reject();
}
【讨论】:
https://forum.qt.io/topic/44065/how-to-catch-finish-button-pressed-signal-in-qwizard/6
我想这里是回答如何捕捉完成按钮按下事件。 我从未使用过 pyqt5,但我认为信号和插槽与 c++ 中的相同。
【讨论】:
这与您在 PyQt 中已经习惯的做法基本相同。区别在于如何找到完成按钮实体。这是一个工作示例:
import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class IntroPage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(IntroPage, self).__init__(parent)
class LastPage(QtWidgets.QWizardPage):
def __init__(self, parent=None):
super(LastPage, self).__init__(parent)
class MyWizard(QtWidgets.QWizard):
def __init__(self, parent=None):
super(MyWizard, self).__init__(parent)
self.introPage = IntroPage()
self.lastPage = LastPage()
self.setPage(0, self.introPage)
self.setPage(1, self.lastPage)
# This is the code you need
self.button(QtWidgets.QWizard.FinishButton).clicked.connect(self._doSomething)
def _doSomething(self):
msgBox = QtWidgets.QMessageBox()
msgBox.setText("Yep, its connected.")
msgBox.exec()
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
main = MyWizard()
main.show()
sys.exit(app.exec_())
注意我是如何使用这个命令的:self.button(QtWidgets.QWizard.FinishButton) 专门指向完成按钮。剩下的就是建立你自己的方法来做你需要的任何事情。在我的示例中,我连接到 def _doSomething(self) 并启动了一个非常简单的 QMessageBox。
【讨论】: