ورود

View Full Version : سوال: سوال در مورد text edit



amin.net
پنج شنبه 01 بهمن 1394, 14:12 عصر
سلام ببخشید من میخواستم اگر کاربر برای مثال کلمه if رو تایپ کنه رنگش مثلا بشه قرمز و اگه چیزی غیر اون تایپ کرد یه رنگ دیگه من این رو در رویداد textChange نوشتم:



void MainWindow::on_textEdit_textChanged()
{
if( ui->textEdit->toPlainText() == "if")
ui->textEdit->setStyleSheet("color:#ff0000");
else
ui->textEdit->setStyleSheet("color:#00ffff);
}


ولی همونطور که مشخصه اشتباهه:لبخند:.این تازه وقتی فقط اگه if رو اول تایپ کنی چک میکنه نه سرتاسرش.
در ضمن اگر پاسخ دادید لطف میکنید توضیح کوچیکی هم بدید تا من متوجه بشم آخه تازه کارم.ممنون.

negative60
پنج شنبه 01 بهمن 1394, 16:17 عصر
خوب مشخصه اشتباهه شما داری ميگی اگه کل متن تکست باکس برابر بود با if،
در QString تابع ای به نام contains برای همين کار وجود داره که متن مورد نظر رو داخل رشته جستجو ميکنه در صورتی که وجود داشت مقدار true بر ميگردونه



if( ui->textEdit->toPlainText().contains("if") == true)
{
ui->textEdit->setStyleSheet("color:#ff0000");
}else{
ui->textEdit->setStyleSheet("color:#00ffff)");
}

amin.net
پنج شنبه 01 بهمن 1394, 21:02 عصر
خوب مشخصه اشتباهه شما داری ميگی اگه کل متن تکست باکس برابر بود با if،
در QString تابع ای به نام contains برای همين کار وجود داره که متن مورد نظر رو داخل رشته جستجو ميکنه در صورتی که وجود داشت مقدار true بر ميگردونه



if( ui->textEdit->toPlainText().contains("if") == true)
{
ui->textEdit->setStyleSheet("color:#ff0000");
}else{
ui->textEdit->setStyleSheet("color:#00ffff)");
}

خیلی ممنون از پاسختون خیلی کمک کرد.ولی بیشتر منظورم این بود که چطور خود کلمه if رنگش عوض شه.اینجوری اگه متن دارای if باشه همه متن رنگش عوض میشه.از setHtml استفاده کردم ولی خطا میده نمیدونم چرا.اگه برا این هم یه راه حل بگید خیلی ممنون میشم.

AliRezaBeytari
پنج شنبه 01 بهمن 1394, 23:02 عصر
فکر کنم شما بخواید یک Code Editor درست کنید. برای این کار بهتره از کلاس QSyntaxHighlighter استفاده کنید :
http://doc.qt.io/qt-5/qtwidgets-richtext-syntaxhighlighter-example.html

موفق باشید.