ちょうど読み込まれると、アプリはかなりスムーズですが、時間が経過するとGUIは遅くなり、ボタンをクリックすると数秒(1または2)後に有効になります。Qt製のGUIが時間を浪費するのはなぜですか?
私は、タスクマネージャでプロセスを見ている、メモリ使用量は、(5メートル前後)安定している、と私はボタンをクリックする前に、CPU使用率も0
である私はvisual_studio_2010でQt_4.8.0を使用しています。
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は()あなたはTMPをINGのdelete
を試すことができます
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);
}
再生するサンプルコードはありますか? –
何か間違っているはずです。あなたのコードを投稿できますか? – mustafa
おそらく、ユーザーインターフェイスで同じスレッドを使用してコードを実行しているからです。これは、ボタンの背後にあるコードが実行されるまで、アプリケーションが応答していないように見せます。 – kechapito