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