Qt没有找到QStackedWidgets的插槽setCurrentWidget

bas*_*ibe 0 c++ user-interface qt

我在Qt中编写了一个向导式应用程序,它使用QStackedWidget来组织向导的各个页面.现在我想在页面之间切换,这应该是可以使用的功能setCurrentWidget(...):

我有一个简单的主类来实例化QWidget audioconfig.然后,它将此QWidget添加到QStackedWidget pageStack使用pageStack.addWidget(&audioconfig);.

后来,我想将来自不同QWidget的特定信号连接hubsetCurrentWidget(...)QStackedWidget,以便切换页面.但是,我的编译器评论说

0Object :: connect:/Users/paperflyer/Development/App/main.cpp中没有这样的插槽QStackedWidget :: setCurrentWidget(audioconfig):41`

我有两件事没有到达:

  • 显然有这样的功能.您可以在QStackedWidget的类定义中查找它.这里发生了什么?
  • 为什么编译器的第一个字符输出为'0',而我的源代码清楚正确地显示为'Q'?

这是整个代码:

int main(int argc, char *argv[])
{
    QApplication app(argc,argv);
    QStackedWidget pageStack;
    CHub hub; // inherits from CWidget
    CAudioConfig audioconfig; // ditto
    pageStack.addWidget(&hub);
    pageStack.addWidget(&audioconfig);

    // connect() is a custom signal of hub
    QObject::connect(&hub, SIGNAL(configure()), &pageStack, SLOT(setCurrentWidget(&audioconfig)));

    pageStack.setGeometry(100,100,700,500);

    pageStack.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

一如既往,非常感谢你的帮助!

rpg*_*rpg 5

QObject :: connect(&hub,SIGNAL(configure()),&pageStack,SLOT(setCurrentWidget(&audioconfig)));

将信号连接到信号/插槽时,连接签名.发射信号时传递实际参数.上面应该是setCurrentWidget(QWidget*),但即便这样也行不通,因为信号的签名必须与插槽的签名相匹配.

注意:我认为如果信号的参数多于插槽,它仍然可以工作,前提是第一个参数相同.