Qt 關於初始化進度對話方塊會自動彈出的問題

2021-07-25 11:43:29 字數 871 閱讀 3023

做專案中遇到乙個小問題 但卻沒在網上找到現成的解決辦法。通過看原始碼 給出解決辦法   

問題描述: 在主視窗中初始化進度對話方塊 通過指標傳遞將進度對話方塊傳遞給各個演算法類中已便在需要時候開啟進度對話方塊執行任務。

本人將qt版本公升級為5.7.1後 進度對話方塊會在初始化時候 就會自動彈出一次。原因是qprogressdialog在初始化函式init()中就將計時器forcetimer開啟  所以才會導致我們在初始化程式時候 進度對話方塊就會跳出來

void qprogressdialogprivate::init(const qstring &labeltext, const qstring &canceltext,

int min, int max)

else

starttime.start();

forcetimer->start(showtime);//開啟定時器

}

解決辦法:

瀏覽原始碼 發現在reset()函式中有計時器的stop函式被呼叫

void qprogressdialog::reset()

#endif

if (d->autoclose || d->forcehide)

hide();

d->bar->reset();

d->cancellation_flag = false;

d->shown_once = false;

d->setvalue_called = false;

d->forcetimer->stop();//停止定時器

}

所以我們在new完進度對話方塊後 在呼叫一下reset函式即可

關於初始化

1 成員初始化時 對於區域性變數 必須制定初始值如果未初始化變數就使用 會報錯 提示變數未被初始化 2 如果類的資料成員是基本型別 系統會給沒有指定初始化的變數指定預設值 比如int為0 double為null string為null 如果是引用型別 系統 會給乙個初始值null 此時如果呼叫類的方...

關於初始化及初始化順序

首先,類的成員變數會被自動初始化,並且會在構造器被呼叫前發生,如下 public class testinitialization public static void main string args 如下 主類 public class staticinitialization 呼叫main之前...

初始化 關於tensorflow的初始化

在寫mnist手寫體識別任務 已放github 時遇到的 問題 我們都知道在session run的時候需要初始化。但是初始化在什麼位置是至關重要的。來看下這段 sess tf.session sess.run tf.global variables initializer mnist model ...