zoukankan      html  css  js  c++  java
  • PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的clicked信号参数QAbstractButton *解决办法

    一、引言

    QDialogButtonBox本身只提供4种信号,分别是accepted、rejected、clicked和helpRequested,在《PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的accepted、rejected和helpRequested信号》介绍了这些按钮中有部分会产生相同的accepted或rejected信号,有部分不会产生accepted或rejected信号,那么怎么确认点击了按钮只能通过clicked信号。

    二、clicked信号的参数问题

    QDialogButtonBox的clicked信号和其他按钮的clicked信号有所不同,其参数类型为QAbstractButton *,这是个典型的C++指针类型,由于Designer中要求信号和槽函数的参数必须类型对应,且槽函数的参数个数必须必须小于等于信号的参数个数,这就会存在如下问题:

    如果槽函数中不设置参数,则无法获取点击的是哪个按钮,如果要获取点击按钮,只能通过匹配类型为QAbstractButton *的指针类型参数,但PyQt并没有指针类型参数。

    三、clicked信号连接槽函数的解决办法

    怎么解决这个问题,老猿想到Python是鸭子类型,对类型不进行强制检查,因此在Designer中将clicked信号与槽函数buttonBoxClicked(QAbstractButton *)进行连接,但在图形派生类中定义的槽函数为 buttonBoxClicked(self,button),结果发现这种方式可以实现QDialogButtonBox的clicked信号和派生类槽函数buttonBoxClicked的连接,并且参数button就是一个QPushButton类型的按钮,可以通过button.text()判断点击的按钮。

    老猿Python,跟老猿学Python!

    博文目录

    博客地址

  • 相关阅读:
    5.7填数字游戏求解
    5.6判断回文数字
    5.5百钱买百鸡问题
    5.4三色球问题
    5.3哥德巴赫猜想的近似证明
    5.2求两个数的最大公约数和最小公倍数
    5.1舍罕王的失算
    4.19递归反向输出字符串
    Elasticsearch 安装
    linux 安装nginx步骤
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11931597.html
Copyright © 2011-2022 走看看