622 سوال

629 پاسخ

855 نظر

242 کاربر

به سامانه پرسش و پاسخ کیوت خوش آمدید, این سامانه به شما امکان می دهد پرسشهای خود را طرح نموده و در کوتاهترین زمان ، پاسخ خود را دریافت نمایید.

-قبل از سوال پرسیدن حتما جست و جو کنید.

-در صورتی که سوالی به شما کمک کرد و یا جوابی ، حتما به آن امتیاز مثبت دهید.

-در صورتی که سوالی پرسیدید و جواب خود را گرفتید حتما جواب را به عنوان بهترین جواب انتخاب کنید.

-از ارسال چند سوال در یک تاپیک جدا خودداری کنید.

-نام مناسب برای سوالات انتخاب کنید.

-برچسب مناسب برای سوالات انتخاب کنید.

-برای نوشتن کد کافی است کد را از ادیتور خود کپی و در ادیتور سایت الصاق کنید و با انتخاب کد کلید CTRL+K را فشار دهید.

-حتما قوانین و نکات دیگر را از اینجا بخوانید.

چرا در کد زیر متن label تغییر نمیکند؟

0 امتیاز
101 بازدید
void Test::funccc()
{
ui->label->setText("ali");
while(true) 
{
qDebug()<<"ali";
}
}

در کد بالا برنامه متن label را تغییر نداده و وارد حلقه while میشود.چطور این مشکل را حل کنم؟

سوال شده دی 22, 1392 در Qt GUI  بوسیله ی a3459 (1,100 امتیاز)  
13% درصد پذیرش جواب ها

2 پاسخ

+4 امتیاز

دلیلش همونی بود که دوستمون گفت. منتها راه حلش اینه که شما event هایی که در صف هستند (از جمله عوض شدن متن دکمه) رو در تابع پردازش کنید. یعنی به این صورت:

void Test::funccc()
{
    ui->label->setText("ali");
    qApp->processEvents(); //اینجا
    while(true) 
    {
        qDebug()<<"ali";
    }
}

البته استفاده از حلقه با تکرار زیاد در برنامه اصلا توصیه نمیشه. و اگر هم مجبور هستید میتونید از این کد درون حلقه استفاده کنید تا برنامه هنگ نکنه.

پاسخ داده شده دی 22, 1392 بوسیله ی qtmil کیومن (10,340 امتیاز)  

ممنون بابت راه حل و نکات زیباتون
اما متاسفانه به این روش هم جواب نداد

خواهش میکنم.
کدو تست کردم جواب داد. یه نگاهی به برنامتون بندازید شاید مشکل از اون باشه.

+1 دیدگاه

باید کل دستورات فانکشنتون اجرا بشه تا تغییرات در ui اعمال بشه. اما شما برنامه تون رو توی لوپ انداختید و هیچ وقت کنترل برنامه تون از فانکشن خارج نمیشه تا اون دستورات رو اعمال کنه

پاسخ داده شده دی 22, 1392 بوسیله ی mr-s-h-h کیومن (5,050 امتیاز)  
ویرایش شده دی 22, 1392 بوسیله ی mr-s-h-h
...