View Full Version : alignment در Qplaintexteditor
menosoft
شنبه 06 دی 1393, 11:02 صبح
با سلام به همه دوستان
من می خوام از کلاس Qplaintexteditor استفاده کنم اما این کلاس از alignment پشتیبانی نمی کند خودم خواستم این کارو انجام بدم اما الان موفق نشدم
یه کلاس نوشتم که از Qplaintexteditor ارث می بده و خواست با کد زیر از راست نوشتن رو بهش اضافه کنم اما نشد.
کد نوشته شده به صورت زیر است . لطفا دوستان کمک کن خیلی فوریه.
void MyTexteditor::setAlignment(Qt::Alignment alignVar)
{
QTextBlockFormat tempblockFormat;
tempblockFormat.setAlignment(alignVar);
QTextCursor cursor = textCursor();
cursor.mergeBlockFormat(tempblockFormat);
setTextCursor(cursor);
}
menosoft
شنبه 06 دی 1393, 23:54 عصر
با سلام به همگی
خدایش یعنی کسی تو این انجمن نیست یه کمکی به ما کنه
دارم کلافه می شم خداااااااااااااا این کیوتی هم که ادم از سورس هیچی نمی تونه سر در بیاره که حداقل بشه از رو سروس خودش یه کاری کرد.
menosoft
پنج شنبه 11 دی 1393, 10:14 صبح
یعنی هیچ کس تو این فروم نبود که یه راهنمایی کنه به ما واقعا Qt اینقد بین ما ایرانی های کم ارزش که هیچ کس تا به حال سورس شو نگاه نداخته باشه . جالب برام
حامد مصافی
پنج شنبه 11 دی 1393, 12:28 عصر
راهی داشت بهت میگفتیم
https://bugreports.qt-project.org/browse/QTBUG-7516
البته راه سر راست منظورمه. وگرنه میتونی خودت یک ویجت بر مبنای QPlainTextEditor بسازی
menosoft
پنج شنبه 11 دی 1393, 21:50 عصر
راهی داشت بهت میگفتیم
https://bugreports.qt-project.org/browse/QTBUG-7516
البته راه سر راست منظورمه. وگرنه میتونی خودت یک ویجت بر مبنای QPlainTextEditor بسازی
من خودم این پست رو دیدم اما این به نظرم یه باگ نیست بلکه خود Qt نمی خواد این گزینه رو برای QplainTextEditor فعال کنه چون فک کنم هم QtCreator و خیلی از نرم افزار های دیگه که فقط برای ویرایش کد EN هستن نیاز به این قابلیت ندارند
اگه توجه کرده باشید من تو پست اول گفتم که خودم خواستم که یه کلاس درست کنم که از کلاس QplainTextEditor ارث ببره و با تابعی که نوشتم می خواستم این ویژگی رو به این کلاس اضافه کنم و برای همین هم راهنمایی می خواستم.
chikar
پنج شنبه 11 دی 1393, 23:06 عصر
سلام تست کردم جواب داد
QPlainTextEdit *te=new QPlainTextEdit(this);
te->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrA nywhere);
te->document()->setDefaultTextOption(QTextOption(Qt::AlignRight));
menosoft
جمعه 12 دی 1393, 01:29 صبح
سلام تست کردم جواب داد
QPlainTextEdit *te=new QPlainTextEdit(this);
te->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrA nywhere);
te->document()->setDefaultTextOption(QTextOption(Qt::AlignRight));
واقعا عالی بود. مرسی دادا ایشالا که خیر ببینی کار مارو راه انداختی
ایشالا خدا کارتو راه بندازه.
omid_kma
جمعه 12 دی 1393, 01:32 صبح
سلام تست کردم جواب داد
QPlainTextEdit *te=new QPlainTextEdit(this);
te->setWordWrapMode(QTextOption::WrapAtWordBoundaryOrA nywhere);
te->document()->setDefaultTextOption(QTextOption(Qt::AlignRight));
منظور ایشون این بوده که وقتی که شروع به تایپ می کنیم و کیبرد فارسی باشه خودکار نوشتن از راست شروع بشه در غیر این صورت از چپ (بقیه ویدجت ها مثل lineEdit این مشکل رو ندارن)
omid_kma
جمعه 12 دی 1393, 03:08 صبح
میشه برای رفع مشکلی که گفتم این طوری عمل کرد :
#include <QtWidgets/QApplication>
#include <QPlainTextEdit>
#include <QKeyEvent>
#include <QEvent>
class RTLBugFix :public QObject
{
public:
bool eventFilter(QObject* obj, QEvent* e){
if (e->type() == QEvent::KeyPress)
{
QPlainTextEdit* pe = dynamic_cast<QPlainTextEdit*>(obj);
if (pe != nullptr)
{
bool rtl = (pe->document()->toPlainText().isRightToLeft() == Qt::RightToLeft);
if ( (pe->layoutDirection()==Qt::RightToLeft||
QApplication::layoutDirection() == Qt::RightToLeft) && rtl)
pe->document()->setDefaultTextOption(QTextOption(Qt::AlignRight));
else
pe->document()->setDefaultTextOption(QTextOption(Qt::AlignLeft));
}
}
return QObject::eventFilter(obj, e);
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
a.installEventFilter(new RTLBugFix());
//test
//QApplication::setLayoutDirection(Qt::RightToLeft);
QPlainTextEdit editor;
editor.setLayoutDirection(Qt::RightToLeft);
editor.show();
return a.exec();
}
menosoft
جمعه 12 دی 1393, 10:35 صبح
منظور ایشون این بوده که وقتی که شروع به تایپ می کنیم و کیبرد فارسی باشه خودکار نوشتن از راست شروع بشه در غیر این صورت از چپ (بقیه ویدجت ها مثل lineEdit این مشکل رو ندارن)
:متفکر::متفکر:
chikar
جمعه 12 دی 1393, 16:25 عصر
واقعا عالی بود. مرسی دادا ایشالا که خیر ببینی کار مارو راه انداختی
ایشالا خدا کارتو راه بندازه.
خواهش میی کنم داداش، اتفاقا کار من هم با دعای شما حل شد
ممنون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.