چینش راستبهچپ برای ویجتهای متنی
-
p{direction:rtl; text-align:right}. سلام
DockWidget موقعی که Laout اون راست به چپ میشه , عنوانش با دکمه ی بستنش تداخل پیدا میکنه!http://s1.picofile.com/file/7233617197/DockWidget_Right2Left_Problem.png!
-
p{direction:rtl; text-align:right}. سلام
این مشکل دلیلش برمیگرده به این که لیآوت فقط روی centralWidget مربوط به Container اعمال میشه. سعی میکنم آخر هفتهٔ بعد درستش کنم. -
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();
@
و این جور کلکها استفاده کنید! -
p{direction:rtl; text-align:right}. یه چیز دیگه این که نسخههای جدید کیوت اجازه نمیده لیآوت QLabel ها رو عوض کنید! نمیدونم چرا.
-
p{direction:rtl; text-align:right}. شاید به خاطر وجود خاصیت Alignment باشه
یه جورایی کار layout رو برای QLabel میکنه -
p{direction:rtl; text-align:right}. ظاهرا این کد فقط موقعی که داک ویجت یک titlebar کاستم (Custom) داشته باشه کار میکنه
@QDockWidget::titleBarWidget()->setLayoutDirection();@
-
@dockWidget->setTitleBarWidget( btnCloseDockWidget /new QPushButton/);
QWidget *widget = dockWidget->titleBarWidget();
if( widget )
widget->setLayoutDirection(Qt::RightToLeft);@ -
[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 رو رعایت کردن.
-
p{direction:rtl; text-align:right}. از نسخه 4.6 به بعد تمام اشیاء AutoDirection شدن. برای Label نیازی به تنظیم Direction ندارید. مثلا اگر فارسی بنویسید RTL میشه و اگر انگلیسی LTR میشه.