Okay. So here is my revised code. Is this okay?
QueryView.hpp:
QThread *t;
To copy to clipboard, switch view to plain text mode
QueryView.cpp:
QueryView::QueryView()
{
connect(SignalClass.get(),SIGNAL(updateViewSignal(QueryTerm&)), this, SLOT(updateView(QueryTerm&)));
connect(queryButton, SIGNAL(clicked()),this, SLOT(doQuery()));
}
void QueryView::doQuery()
{
emit fSignalClass->stopExistingQuery();
std::shared_ptr<QueryAction> action = std::make_shared<QueryAction>(queryTerm);
action->moveToThread(t);
t->start();
emit fSignalClass->excuteSignal();
}
QueryView::updateView(QueryTerm& term)
{
...update view with query result
}
QueryView::QueryView()
{
connect(SignalClass.get(),SIGNAL(updateViewSignal(QueryTerm&)), this, SLOT(updateView(QueryTerm&)));
connect(queryButton, SIGNAL(clicked()),this, SLOT(doQuery()));
}
void QueryView::doQuery()
{
t = new QThread()
emit fSignalClass->stopExistingQuery();
std::shared_ptr<QueryAction> action = std::make_shared<QueryAction>(queryTerm);
action->moveToThread(t);
t->start();
emit fSignalClass->excuteSignal();
}
QueryView::updateView(QueryTerm& term)
{
...update view with query result
}
To copy to clipboard, switch view to plain text mode
QueryAction class:
QueryAction::QueryAction(QueryTerm& queryTerm): fQueryTerm(queryTerm)
{
connect(SignalClass.get(), SIGNAL(excuteSignal()), this, SLOT(startSearch()));
connect(SignalClass.get(), SIGNAL(stopExistingQuery()), this, SLOT(stopQuery()));
continueQuery = true;
}
void QueryAction::startSearch()
{
//init cursor
while (db_cursor != empty)
{
...get query result
if (continueQuery)
emit fSignalClass->updateViewSignal(aResult);
}
}
void QueryAction::stopQuery()
{
continueQuery = false;
}
QueryAction::QueryAction(QueryTerm& queryTerm): fQueryTerm(queryTerm)
{
connect(SignalClass.get(), SIGNAL(excuteSignal()), this, SLOT(startSearch()));
connect(SignalClass.get(), SIGNAL(stopExistingQuery()), this, SLOT(stopQuery()));
continueQuery = true;
}
void QueryAction::startSearch()
{
//init cursor
while (db_cursor != empty)
{
...get query result
if (continueQuery)
emit fSignalClass->updateViewSignal(aResult);
}
}
void QueryAction::stopQuery()
{
continueQuery = false;
}
To copy to clipboard, switch view to plain text mode
Bookmarks