在QCheckBox类组件的“转到槽”对话框中,有两个名称为clicked的信号,一个是不带参数的clicked()信号,一个是带参数的click(bool)信号,这种名称相同,但参数个数或者类型不同的信号就是overload型信号。
我们将Italic checkbox的信号定为clicked(bool)。
上篇文章我们提到了connectSlotsByName()函数进行信号与槽函数的关联时,会使用一个默认的信号,对QCheckBox来说,默认使用的是不带参数的click()信号。所以我们需要传递参数checked。不然会报错。
使用@pyqtSlot修饰符声明函数参数类型后,connectSlotsByName()函数就会自动使用clicked(bool)信号与这个槽函数关联,运行就没问题了。
from PyQt6.QtCore import pyqtSlot
@pyqtSlot(bool)
def on_checkBox_2_clicked(self, checked):
font = self.__ui.plainTextEdit.font()
font.setItalic(checked)
self.__ui.plainTextEdit.setFont(font)
import sys
from PyQt6.QtWidgets import QApplication, QDialog
from ui_Dialog import Ui_Dialog
from PyQt6.QtCore import pyqtSlot
class QmyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.__ui = Ui_Dialog()
self.__ui.setupUi(self)
def on_checkBox_3_toggled(self, checked):
font = self.__ui.plainTextEdit.font()
# 参数checked表示勾选状态
font.setBold(checked)
self.__ui.plainTextEdit.setFont(font)
def on_checkBox_clicked(self):
checked = self.__ui.checkBox.isChecked()
font = self.__ui.plainTextEdit.font()
font.setUnderline(checked)
self.__ui.plainTextEdit.setFont(font)
@pyqtSlot(bool)
def on_checkBox_2_clicked(self, checked):
font = self.__ui.plainTextEdit.font()
font.setItalic(checked)
self.__ui.plainTextEdit.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
myDialog = QmyDialog()
myDialog.show()
sys.exit(app.exec())