Qt问题将参数传递给slot

14 c++ qt qt4 signals-slots

我似乎无法将一个参数传递给一个插槽.如果我没有传递一个参数,那么函数会很好地滚动.如果我传递一个参数(整数),我编译时会得到错误"没有这样的名字类型"和"没有这样的插槽".

在我的标题中,我声明:

private slots:
void addButton(int);
signals:
void clicked(int)
Run Code Online (Sandbox Code Playgroud)

在我的Main.cpp中,我这样做:

int count;
int count = 0;
QPushButton* button = new QPushButton("Button");
_layout->addWidget(button);
connect(button, SIGNAL(clicked(count), this, SLOT(addButton(count)));
Run Code Online (Sandbox Code Playgroud)

....

void Main::addButton(int count) {

//do stuff with count

}
Run Code Online (Sandbox Code Playgroud)

cgm*_*gmb 17

塞巴斯蒂安是正确的,你不能以你正在尝试的方式做到这一点,但是Qt确实提供了一个为你提供所需功能的类.

查看QSignalMapper.它允许您将整数与对象/信号对相关联.然后连接到其信号而不是直接连接到按钮.


Seb*_*zus 8

信号和插槽必须具有相同数量和类型的参数,并且您只能将信号的参数传递给插槽,而不是您想要的任何变量或值.