جستجو در تالارهای گفتگو
در حال نمایش نتایج برای برچسب های 'qthread'.
4 نتیجه پیدا شد
-
با سلام. در حال یادگیرQt و Thread ها بودم که به مشکل دسترسی به متغیر در Thread بر خوردم. کلاس زیر از QThread مشتق شده است : #ifndef MYTHREAD_H #define MYTHREAD_H #include <QObject> #include <QWidget> #include <QThread> #include <QMutex> class MyThread : public QThread { Q_OBJECT public: explicit MyThread(QObject *parent = nullptr); void run() override; bool Stop; signals: void NumberChanged(int); }; #endif // MYTHREAD_H #include "mythread.h" MyThread::MyThread(QObject *parent) : QThread (parent) { } void MyThread::run() { for(int i=0; i<100000000 ; ++i){ QMutex mutex; mutex.lock(); if (this->Stop) break; mutex.unlock(); emit NumberChanged(i); this->msleep(100); } } داخل فرم خودم دو QPushBotton و یک QLabel دارم. که یکی از دکمهها (QPushButton) وظیفه اجرای یک QThread را دارد و یکی دیگه باعث متوقف کردن کار QThread ایجاد شده : #include "dialog.h" #include "ui_dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog){ ui->setupUi(this); mThread = new MyThread(this); connect(mThread,SIGNAL(NumberChanged(int)),this,SLOT(onNumberChanged (int))); } Dialog::~Dialog(){ delete ui; } void Dialog::onNumberChanged(int Number){ ui->label->setText(QString::number(Number)); } void Dialog::on_pushButton_clicked(){ mThread->start(); } void Dialog::on_pushButton_2_clicked(){ mThread->Stop = false; } در کد بالا زمانیکه on_pushButton_clicked فراخوانی شد. QThread را اجرا میکند. و در مقابل زمانیکه on_pushButton_2_clicked فراخوانی شد. متغیر bool MyThread::Stop را برابر مقدار false میگذارد که باعث از بین رفتن عملیات QThread ایجاد شده میشود. اما در اصل هیچ تفاوتی ایجاد نمیکند ؟ و زمان بستن برنامه با خطای لاگ زیر برخورد میکنم : 21:39:20: Starting /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled... QThread: Destroyed while thread is still running 21:39:32: The program has unexpectedly finished. 21:39:32: The process was ended forcefully. 21:39:32: /tmp/untitled/build-untitled-Desktop_Clang_7_0_0-Debug/untitled crashed. کجای کار اشتباه شده است ؟
-
سلام من میخواستم از یه QPlainTextedit خط خط نوشته هارو بخونم و هر کدوم رو به یک QThread ام بدم و از QPlainTextedit پاک بشه هر خطی که خونده شده رو چطور میتونم اینکارو انجام بدم؟ C++ کم بلدم دارم یاد میگیرم ممنون میشم کمک کنید.
- 2 پاسخ
-
- qplaintextedit
- qt
-
(و 1 مورد دیگر)
برچسب زده شده با :
-
با سلام خدمت اساتید محترم. اگر پروژه ای که در کیوت ساختیم رو بخواییم از کلاس های QThread و QTimer استفاده کنیم ، در چه بخش هایی از پروژه باید استفاده کنیم؟ با توجه به جستجویی که داشتم هیچ از یک منابع به طور کامل و جامع توضیح ندادند که در پروژه های کیوت در چه قسمت هایی باید از QThread استفاده شه و در چه قسمت هایی از QTimer ! هدف من از این سوال این هست که در حین انجام یک پروسس از کدام کلاس باید استفاده کرد که ui هنگ نکنه! از اساتید محترم تقاضا دارم کامل این مشکل رو توضیح بدن با تشکر فراوان.
-
با سلام و خسته نباشید. اگر امکانش باشه یه آموزش به صورت پروژه محور در مورد QThread در GUI تهیه کنید. آموزش های سطح اینترنت بسیار ساده هستش و از سیگنال و اسلات بسیار کم استفاده شده. ممنون بابت سایت خوبتون