میشه برای رفع مشکلی که گفتم این طوری عمل کرد :
#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();
}