當剛加載時,應用程序相當流暢,但隨着時間的推移,GUI會變得越來越慢,也就是說,當我點擊一個按鈕時,它只會在幾秒鐘後(1或2)生效。爲什麼Qt製作的GUI會隨着時間而停滯不前?
我曾經看過在任務管理器的進程,內存使用(大約5M)穩定,在此之前我點擊按鈕,CPU使用率也爲0。
我使用Qt_4.8.0與visual_studio_2010 。
是否因爲Windows上的qt lib的效率?
一些代碼:
/////////mainwindow.h////////////
QPushButton* reloadHostsPushButton = new QPushButton("Reload Hosts");
reloadHostsPushButton->setMaximumSize(aPushButtonMaxSize);
connect(reloadHostsPushButton, SIGNAL(clicked()),
this, SLOT(reloadHostsClicked()));
QPushButton* flushDNSPushButton = new QPushButton("Flush DNS Cache");
flushDNSPushButton->setMaximumSize(aPushButtonMaxSize);
connect(flushDNSPushButton, SIGNAL(clicked()),
this, SLOT(flushDNSClicked()));
controlPanelLayout = new QGridLayout();
controlPanelLayout->addWidget(openHostsPushButton, 0, 0);
controlPanelLayout->addWidget(reloadHostsPushButton, 0, 1);
controlPanelLayout->addWidget(flushDNSPushButton, 0, 2);
controlPanelLayout->addWidget(quitPushButton, 1, 2);
controlPanelLayout->addWidget(aboutPushButton, 1, 1);
controlPanelLayout->addWidget(optionsPushButton, 1, 0);
controlPanel = new QWidget();
controlPanel->setLayout(controlPanelLayout);
/////////服務器.H ////////////// flushDNSClicked()調用此/////////
void Server::flushDNSCache(){
ui_LogPanel->log("Flushing DNS cache...", UI_LogPanel::aLogRed);
QProcess* tmp = new QProcess();
tmp->start("ipconfig", QStringList() << "/flushdns");
ui_LogPanel->log("DNS cache flushed!", UI_LogPanel::aLogItalic | UI_LogPanel::aLogGreen);
}
任何示例代碼重現? – 2012-02-13 08:14:46
必須有其他錯誤。你可以發佈你的代碼嗎? – mustafa 2012-02-13 08:16:19
也許是因爲您正在使用與用戶界面相同的線程運行代碼。這將使應用程序看起來像是沒有響應,直到你的代碼在按鈕後面執行。 – kechapito 2012-02-13 08:19:01