چینش راستبهچپ برای ویجتهای متنی
-
p{direction:rtl; text-align:right}. سلام
در مورد چینش راستبهچپ در ویجتها همچنین لیآوت کلی مشکلاتی هست. بعضی از اینها از جمله مشکل جهتگیری منوهای تودرتو در نسخههای قبلی اصلاح شدن. اما بعضیها مثل جهت ویجت تاریخ و ساعت مشکلشون برطرف نشده. هر مشکلی که در مورد چینش راستبهچپ دارید اینجا مطرح کنید تا در صورت امکان اصلاح بشه.p{direction:rtl; text-align:right}. در مورد ویجتهای متنی هم الگوریتم Bidirectional بهطور کامل پیادهسازی نشده. من فکر میکنم بهتره این الگوریتم برای کلاس پایهٔ موتور متنی پیادهسازی بشه اما خیلی سخت بتونم برنامهنویسهای کیوت رو قانع کنم که این کد باید در سورس اصلی وجود داشته باشه! اونا احتمالا میگن مسأله خاصتر از چیزی هست که نیاز باشه اضافه کنیم.
p{direction:rtl; text-align:right}. برای اطلاعات بیشتر در مورد الگوریتم bidi "اینجا":http://unicode.org/reports/tr9/ رو ببینید. اگر نظری در مورد راستبهچپ بودن موتور متنی دارید مطرح کنید.
-
p{direction:rtl; text-align:right}. سلام
DockWidget موقعی که Laout اون راست به چپ میشه , عنوانش با دکمه ی بستنش تداخل پیدا میکنه!http://s1.picofile.com/file/7233617197/DockWidget_Right2Left_Problem.png!
-
p{direction:rtl; text-align:right}. خوبیش اینه که با qApp میتونی این مشکل رو بر طرق کنی
!http://img4up.com/up2/73133988910795354510.png(qAppLayout)! -
[quote author="Mahdi" date="1327702894"]p{direction:rtl; text-align:right}. خوبیش اینه که با qApp میتونی این مشکل رو بر طرق کنی
[/quote]p{direction:rtl; text-align:right}. دلیلش اینه که setLayoutDirection تمام جهتها رو بهصورت عمقی عوض میکنه. ینی برای ویجت فعلی، تمام فرزندان ویجت فعلی، تمام فرزندان آنها و الی آخر... قاعدتاً باید برای خود یک ویجت لیآوت تمام فرزندانش رو هم عوض کنه که نمیکنه. و این فقط در مورد ویجت داک اینطوری نیست. همهٔ وجتهای Container اینطوری نوشته شدن. اگر کمی دقت کنیم میبینیم که منطقیش هم همینه! چون وقتی شما لیآوت یک ویجت رو عوض میکنی نباید انتظار داشته باشید که لیآوت تمام فرزندان اون ویجت هم عوض بشن. فرض کنید یک ویجت محتوایی مثل Grid دارید. وقتی شما لیآوتش رو راست به چپ میکنید انتظار دارید که تنها چینش خود ویجتهای داخلی عوض بشه. نه این که تک تک محتوای هر ویجت داخلی راست به چپ بشه!.
من این کد رو دست نمیزنم. اگر نیاز هست یک جایی لیآوت داک رو عوض کنید، لیآوت عنوانش رو دستی عوض کنید! مثلا از
@
QDockWidget::titleBarWidget()->setLayoutDirection();
@
و این جور کلکها استفاده کنید! -
[quote author="Mahdi" date="1328102820"]p{direction:rtl; text-align:right}. شاید به خاطر وجود خاصیت Alignment باشه
یه جورایی کار layout رو برای QLabel میکنه[/quote]p{direction:rtl; text-align:right}. اتفاقن کار خیلی منطقی انجام دادن! چون QLabel متن PlainText داره. و جهت براش نباید وجود داشته باشه. اصو ل مربوط به تفاوت Alignment و Direction رو رعایت کردن.