PDA

View Full Version : Thread در MainWindow



sirwan.bz
دوشنبه 30 تیر 1393, 12:06 عصر
سلام دوستان


توی Thread زدن معمولا slot رو براش توی یه کلاس جدا تعریف میکنن و بعد اونو کانکت میکنن و وقتی دکمه ی ستارت زده بشه اونجا Thread استارت میشه

ولی وقتی اونو توی یه کلاس جدا واسش تعریف نکنیم چی؟ یعنی همه کارامونو توی همون MainWindow بخوایم انجام بدیم.




MainWindow::MainWindow(QWidget*parent):
QMainWindow(parent),
ui(newUi::MainWindow){
ui->setupUi(this);}


voidMainWindow::DoThread(QThread&mThread)
{connect(&mThread,SIGNAL(started()),this,SLOT(DoWOrk()));
}voidMainWindow::DoWOrk(){
int a = ui->lineEdit->text().ToInt();
int b = ui->lineEdit2->text().ToInt();

for(int i=a; i<=b; i++)
{
Do SomeThing
}

voidMainWindow::on_pushButton_clicked()
{

}

خوب الان مشکل من اینه که Thread رو توی دکمه ام چجوری استارت کنم؟
آیا فقط بنویسم


thread->start();

کافیه؟ یا باید یه سری چیزای دیگه رو هم moveToThread کنم؟


ممنون میشم اگه راهنماییم کنید.

کامبیز اسدزاده
دوشنبه 30 تیر 1393, 12:21 عصر
سلام دوستان

توی Thread زدن معمولا slot رو براش توی یه کلاس جدا تعریف میکنن و بعد اونو کانکت میکنن و وقتی دکمه ی ستارت زده بشه اونجا Thread استارت میشه

ولی وقتی اونو توی یه کلاس جدا واسش تعریف نکنیم چی؟ یعنی همه کارامونو توی همون MainWindow بخوایم انجام بدیم.


MainWindow::MainWindow(QWidget*parent):QMainWindow (parent),ui(newUi::MainWindow){ui->setupUi(this);}


voidMainWindow::DoThread(QThread&mThread){connect(&mThread,SIGNAL(started()),this,SLOT(DoWOrk()));}vo idMainWindow::DoWOrk(){
int a = ui->lineEdit->text().ToInt();
int b = ui->lineEdit2->text().ToInt();

for(int i=a; i<=b; i++)
{
Do SomeThig
}


voidMainWindow::on_pushButton_clicked(){

}
}[/CODE
خوب الان مشکل من اینه که Thread رو توی دکمه ام چجوری استارت کنم؟
آیا فقط بنویسم

thread->start();

کافیه؟ یا باید یه سری چیزای دیگه رو هم moveToThread کنم؟

ممنون میشم اگه راهنماییم کنید.

روش Move دادن برای Thread به صورت زیر هست :

http://barnamenevis.org/showthread.php?436304-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%88-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-C-%E2%80%8E%E2%80%8E-Qt-%D8%A8%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%DA%AF%D8%A7%D9%85-%D8%A8%D9%87-%DA%AF%D8%A7%D9%85&p=2022631&viewfull=1#post2022631

بررسی کنید.