无法在 signal/slot/connect 例程中传递参数
cannot pass arguments in a signal/slot/connect routine
我想做一些非常简单的事情。单击切换按钮并在 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 ){...}
h:
public slots:
void showHidePw_ButtonAction( QMessageBox* dialog);
无论我如何在连接或 .h 中格式化 SLOT,我都无法解析槽的参数。这很烦人。但是,当我根本不向插槽传递参数时它会起作用:
cpp:
connect( _show_hide_password, SIGNAL ( toggled( bool ) ), this, SLOT ( showHidePw_ButtonAction() ) );
h:
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
插槽应该具有的唯一参数是与信号相同的参数。
您有两个选择,都非常简单:
- 让
show_password_warning
成为你的class 的成员变量
- 在
showHidePw_ButtonAction()
方法中创建 show_password_warning
并在完成后将其删除。
我想做一些非常简单的事情。单击切换按钮并在 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 ){...}
h:
public slots:
void showHidePw_ButtonAction( QMessageBox* dialog);
无论我如何在连接或 .h 中格式化 SLOT,我都无法解析槽的参数。这很烦人。但是,当我根本不向插槽传递参数时它会起作用:
cpp:
connect( _show_hide_password, SIGNAL ( toggled( bool ) ), this, SLOT ( showHidePw_ButtonAction() ) );
h:
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
插槽应该具有的唯一参数是与信号相同的参数。
您有两个选择,都非常简单:
- 让
show_password_warning
成为你的class 的成员变量
- 在
showHidePw_ButtonAction()
方法中创建show_password_warning
并在完成后将其删除。