当刚加载时,应用程序相当流畅,但随着时间的推移,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