1.moveToThread的一个完整实例
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
Timer *timer = new Timer;
timer->setInterval(1000);
THread *t = new THread(this);
timer->moveToThread(t);
connect(t, SIGNAL(started()), timer, SLOT(start()));
connect(t, SIGNAL(finished()), timer, SLOT(deleteLater()));
connect(timer, SIGNAL(timeout()), this ,SLOT(print()));
//
t->start();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::print()
{
qDebug()<<"timeout";
}
//自定义的Timer
Timer::~Timer()
{
qDebug()<< __FUNCTION__;
}
//THread
THread::~THread()
{
this->quit();
this->wait();
qDebug()<< __FUNCTION__;
}
2.qt表达式求值
QScriptEngine().evaluate("3 + Math.sqrt(5) + Math.pow(3,2) + Math.log(5)").toNumber()