私のコードには、計算に時間がかかる関数が含まれています。応答性を高めるために、進行状況を 10 分の 1 ごとにプログレス バーで視覚化したいと考えました。ただし、関数は Main Widget クラス以外の別のクラスに実装されており、Widget クラスの ui 要素にアクセスできません。関数中に発せられるシグナルを入れてみたのですが、エラーになってしまいます。関連するコードは次のようになります。
//Class cpp implementation
void Dataset::calculateNew(){
for(int i = 0; i<1000; i++){
if(i%100==0)
emit valueChanged(i); //first Error
for(int j = 0; j<1000; j++){
for(int k=0; k<1000; k++){
//Expensive Matrix calculation
}
}
}
}
//Class .h implementation
signal:
valueChanged(int value);
//Widget implementation
connect(Dataset::calculateNew(), SIGNAL(valueChanged(int)), this, SLOT(updateProgressBar(int))); //second Error here
私は正しい方法で考えていますか?機能させるにはどうすればよいですか?または、Widget クラスの ui 要素にアクセスして変更する別の方法があります。
注: Dataset クラスに "widget.h" をインクルードしようとしましたが、インクルードするクラスとして認識されません。