【发布时间】:2012-03-04 15:56:22
【问题描述】:
刚加载时,应用程序相当流畅,但随着时间的推移,gui 变得越来越慢,也就是说,当我单击一个按钮时,它只会在几秒钟后(1 或 2 秒)生效。
我在任务管理器里看了下,内存使用稳定(5m左右),在我点击按钮之前,cpu使用也是0。
我正在使用 Qt_4.8.0 和 visual_studio_2010。
是因为qt lib在windows上的效率吗?
一些代码:
////////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);
////////server.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);
}
【问题讨论】:
-
任何示例代码可以重现?
-
肯定有其他问题。你能发布你的代码吗?
-
可能是因为您在使用与用户界面相同的线程中运行代码。这将使应用程序看起来像在执行按钮后面的代码之前没有响应。
-
@KamilKlimek 这是一个有很多代码的项目,我发布了一些相关的代码。
-
@marcushatchenson
QProcess::start()说它将创建一个新进程。
标签: c++ windows visual-studio qt user-interface