C++ QConnect通过Qt Creater在QCombobox上找不到这样的插槽 我创建了一个从QWidget 我为那个窗口设置了一个网格布局 我在该窗口的公共插槽中创建了一个名为handleRoChange(int index)的函数 我添加了一个Qcombobox来调用函数handleRoChange(int index)

C++ QConnect通过Qt Creater在QCombobox上找不到这样的插槽 我创建了一个从QWidget 我为那个窗口设置了一个网格布局 我在该窗口的公共插槽中创建了一个名为handleRoChange(int index)的函数 我添加了一个Qcombobox来调用函数handleRoChange(int index),c++,qt,C++,Qt,我一直在说: **QObject::connect: No such slot QWidget::handleHeroChange(int) in ../Testing/Window.cpp:92** 我做错了什么 代码: //Window.h class Window : public QWidget { QGraphicsPixmapItem* avatar; QGraphicsTextItem* heroNameItem;

我一直在说:

**QObject::connect: No such slot QWidget::handleHeroChange(int) in ../Testing/Window.cpp:92**
我做错了什么

代码:

//Window.h
    class Window : public QWidget
    {
        QGraphicsPixmapItem* avatar;
        QGraphicsTextItem* heroNameItem;
        QGraphicsTextItem* heroStrItem;
        QGraphicsTextItem* heroDexItem;
        QGraphicsTextItem* herointelItem;
      public:
        Window(QWidget *parent = 0);
      public slots:
        void handleHeroChange(int);
    };

//Window.cpp
    Window::Window(QWidget *parent)
        : QWidget(parent)
    {

       QGridLayout *grid = new QGridLayout(this);
       QComboBox *comboHeroClass = new QComboBox();
        comboHeroClass->addItem("Witcher");
        comboHeroClass->addItem("Maurander");
        comboHeroClass->setCurrentIndex(1);
        grid->addWidget(comboHeroClass, 2,3,1,1);
        QComboBox::connect(comboHeroClass, SIGNAL(currentIndexChanged(int)),this, SLOT(handleHeroChange(int)));
    }

    void Window::handleHeroChange(int index){
        QPixmap myImage;
        if(index == 0){

        }else if(index == 1){

        }
    }
将不带分号的Q_对象宏添加到类中并重新生成项目


没有这个宏,moc就找不到你的类,也不会创建你的槽(和其他一些东西),这就是为什么你会出现错误:你看到你的槽,但它不存在,你会出现运行时错误

在这里发布你的头文件并写入QObject::connect@Chernobyl写QObject::connect是什么意思?我认为这已经足够了:QComboBox::connect(comboHeroClass,SIGNAL(currentIndexChanged(int)),this,SLOT(HandleRoChange(int));请发布标题文件。@Chernobyl已经完成了,先生!请提供帮助。由于您继承自
QWidget
,这是一个
QObject
,您可以使用
connect(…)
。我只是将Q_对象放在那样的位置,它不会编译。上面写着::-1:错误:没有找到架构x86_64;的符号。我以前从未见过这个错误,所以很遗憾,在这里我帮不了你。请看其他答案,也许你们会找到解决办法,但不要认为当你们添加宏时你们做错了什么,不!所有使用信号和插槽的类都需要这个宏。我告诉过你们重建项目,也许我们彼此不了解,但现在一切都好了,所以很好)是的!谢谢你,伙计。重建不起作用。我必须去构建并选择qmake。
class Window : public QWidget
{
    Q_OBJECT