gpt4 book ai didi

c++ - 不能在信号/槽/连接例程中传递参数

转载 作者:行者123 更新时间:2023-11-28 06:00:50 27 4
gpt4 key购买 nike

我想做一些非常简单的事情。单击切换按钮并在 QT 中获取消息框。

cpp:

_show_hide_password = new QPushButton( "abc" );
_show_hide_password->setCheckable( true );
...
QMessageBox* show_password_warning = new QMessageBox ( this );
...
connect( _show_hide_password, SIGNAL ( toggled( bool ) ), this, SLOT ( showHidePw_ButtonAction( QMessageBox* show_password_warning ) ) );


void showHidePw_ButtonAction( QMessageBox* dialog ){...}

:

public slots:
void showHidePw_ButtonAction( QMessageBox* dialog);

无论我如何在连接或 .h 中格式化 SLOT,我都无法解析槽的参数。这很烦人。但是,当我根本不向插槽传递参数时它会起作用:

cpp:

connect( _show_hide_password, SIGNAL ( toggled( bool ) ), this, SLOT ( showHidePw_ButtonAction() ) );

:

public slots:
void showHidePw_ButtonAction( );

但我不允许在 .h-data 中保留 QMessageBox* show_password_warning 全局。

如何向信号中声明的函数传递一个参数?

我想这是一个非常简单的用例。应该有一个漂亮而干净的解决方案,不需要一些夸张的代码信号转换函数。

编译没有问题,但在启动程序后出现以下错误:

QObject::connect: No such slot PinEntryDialog::showHidePw_ButtonAction( QMessageBox* show_password_warning ) in pinentrydialog.cpp:198

最佳答案

插槽唯一应该具有的参数是与信号相同的参数。

您有两种选择,这两种选择都非常简单:

  1. 使show_password_warning成为您类的成员变量
  2. showHidePw_ButtonAction() 方法中创建 show_password_warning 并在完成后将其删除。

关于c++ - 不能在信号/槽/连接例程中传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com