[Qt-interest] Applying RightToLeft for whole application

admin at mbnoimi.net admin at mbnoimi.net
Wed May 18 17:35:19 CEST 2011


On 18/05/2011 05:38 م, admin at mbnoimi.net wrote:

> On 18/05/2011 04:32 م, admin at mbnoimi.net wrote:
>
>> Hi guys,
>>
>>
>> For applying right to left layout I use setLayoutDirection function 
>> for each container (QWdiget, QMainWindow... etc) in some cases (I 
>> faced it) it's really exhausted procedure so I'm wondering:
>>
>>
>> *Can I applying layout direction for whole application by single line?*
>>
>>
>> PS
>>
>> I tried to use setLayoutDirection with QApplication varialble but it 
>> didn't work!
>>
>>
>> intmain(intargc,char*argv[])
>>
>> {
>>      QApplication  a(argc,  argv);
>>      MainWindow  w;
>>      a.setLayoutDirection(Qt::RightToLeft);
>>      w.show();
>>      return  a.exec();
>> }
>>
>> There is out code solution which passing -reverse argument. *Can I 
>> use -reverse somehow inside my code for geting its benefit?*
> Sorry, It's working well when I use setLayoutDirection in main() but 
> it's not when I use it from MainWindow... see this slot:
>
> voidMainWindow::on_actionInstant_Translation_triggered()
> {
>      QTranslator  translator;
>      if(qApp->isRightToLeft())
>      {
>          if(!translator.load(":/lang/en"))
>              qDebug()<<QObject::tr("Couldn't  load  English  language");
> //         this->setLayoutDirection(Qt::LeftToRight);
>          qApp->setLayoutDirection(Qt::LeftToRight);
>      }
>      else
>      {
>          if(!translator.load(":/lang/ar"))
>              qDebug()<<QObject::tr("Couldn't  load  Arabic  language");
> //         this->setLayoutDirection(Qt::RightToLeft);
>          QLocale::setDefault(QLocale(QLocale::Arabic,  QLocale::SyrianArabRepublic));
>          qApp->setLayoutDirection(Qt::RightToLeft);
>      }
>      qApp->installTranslator(&translator);
>      ui->retranslateUi(this);
>      QLocale  local;
>      /**  
>        BUG:  QMessageBox  buttons  didn't  appear  in  Arabic  for  Arabic  local  language  $  RTL  layout
>        */
>      QMessageBox::information(this,  "",  QLocale::languageToString(local.language()),  QMessageBox::Yes|QMessageBox::No);
> }
I fixed the issue by adding this loop:
foreach(QWidget*widget,QApplication::allWidgets())

             widget->setLayoutDirection(Qt::RightToLeft);




-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110518/ea8b4ea4/attachment.html 


More information about the Qt-interest-old mailing list