我的代碼包含一個需要大量時間來計算的函式。為了讓它感覺更靈敏,我想用進度條可視化每十分之一的進度。但是,該功能是在我的 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”,但它不被識別為要包含的類,
uj5u.com熱心網友回復:
沒有最小的例子很難說,但我想問題在于你的連接電話:
connect(Dataset::calculateNew(), SIGNAL(valueChanged(int)), this, SLOT(updateProgressBar(int))); //second Error here
如果您的資料集物件被呼叫ds,它應該如下所示:
connect(&ds, SIGNAL(valueChanged(int)), this, SLOT(updateProgressBar(int)));
順便說一句,您為什么不使用基于功能指標的新信號槽語法?你還在QT4嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/410788.html
標籤:
上一篇:std::thread::hardware_concurrency()未在AMDRyzenthreadripper3990x中回傳正確數量的邏輯處理器
