C++ 更新整数编号的机具信号槽

C++ 更新整数编号的机具信号槽,c++,qt,C++,Qt,我尝试实现一个函数,当我按下一个按钮并改变一个被画圆的位置时,该函数会改变位置的整数 我用一个全局变量尝试了它,并用一个按钮更新了值,但它不起作用。 然后我尝试了这个,我不知道如何修复这个错误。 我还尝试加入file.moc,但它不起作用,我使用的是CMake版本3.1.0 对“vtable for Number”的未定义引用 对“Number::onChangeint”的未定义引用 将所有类放在它们自己的.h和.cpp文件中 在.cpp中定义内联函数并进行干净的重建。确保删除了所有Qt生成的代

我尝试实现一个函数,当我按下一个按钮并改变一个被画圆的位置时,该函数会改变位置的整数

我用一个全局变量尝试了它,并用一个按钮更新了值,但它不起作用。 然后我尝试了这个,我不知道如何修复这个错误。 我还尝试加入file.moc,但它不起作用,我使用的是CMake版本3.1.0

对“vtable for Number”的未定义引用

对“Number::onChangeint”的未定义引用

将所有类放在它们自己的.h和.cpp文件中

在.cpp中定义内联函数并进行干净的重建。确保删除了所有Qt生成的代码


希望这能有所帮助。

听起来你的品牌在数字上没有链接。o。您是从Qt Creator内部构建的吗?您是如何将moc与CMake脚本一起使用的?您的bug可能在您的CMakeList中。txt@JosephLarson我用Eclipse@dreschejm是的,我意识到了这一点,我对编程真的很陌生。这是我的CMakeList.txt第一次被窃听
#include <QObject>
    
    class Number: public QObject {
        Q_OBJECT
          Q_PROPERTY( int value READ getValue WRITE setValue NOTIFY valueChanged )
    private:
        int value;
    
    public:
        explicit Number( QObject* parent = nullptr ) :
               QObject{ parent }, value { 0 } {}
           virtual ~Number() {}
    
           int getValue() const { return value; }
    
    
    public slots:
        void setValue(int value) {
            if (value != this->value) {
                this->value = value;
                emit onChange(value);
            }
        }
    
    //public
    signals:
        void onChange(int newValue);
    };
 void MainWindow::on_pushButton_2_clicked() {



    Number a;// a.getValue() == 0, b.getValue() == 0
    Number b;

    a.setValue(5); // a.getValue() == 5, b.getValue() == 0
    b.setValue(48); // a.getValue() == 5, b.getValue() == 48

    QObject::connect(&a, SIGNAL(onChange(int)), &b, SLOT(setValue(int)));

    a.setValue(12); // a.getValue() == 12, b.getValue() == 12
    b.setValue(23); // a.getValue() == 12, b.getValue() == 23


std::cout<<"oben"<<std::endl;

}