2012-06-12 6 views
2

Я использую Qt 4.7.4 и свой язык приложения в RTL. Я установил макет приложения в RightToLeft. Итак, теперь все теперь справа налево, кроме заполнителей в QLineEdit.Qt - Как изменить направление заполнения в QLineEdit?

Я пробовал метод setAlignment , но он меняет направление текста и заслонки в обратном порядке. Тогда я попытался setStylesheet, но он не работает для

direction:rtl; 
text-align:right; 
unicode-bidi:embed; 

Я думаю, что это ошибка, Есть ли исправить?

+0

Вы пытались вызвать 'setLayoutDirection (Qt :: RightToLeft)' отдельно для каждого виджета 'QLineEdit'? Я не говорю, что это сработает ... – TonyK

+0

@TonyK: Спасибо, я попробовал, но он не работает. –

ответ

2

Список изменений для версии 4.7 гласит не следует:

QWidget :: setLayoutDirection больше не влияет на расположение текста направление (Qt :: LeftToRight или Qt :: RightToLeft) из QTextEdit, QLineEdit и виджетов на основе на них.

Направление текста по умолчанию (Qt :: LayoutDirectionAuto) теперь обнаружено с раскладки клавиатуры и язык текста (соответствует стандартам Unicode).

Чтобы программно заставить направление текста в QTextEdit, вы можете изменить defaultTextOption из QTextDocument, связанного с этим виджета с новым QTextOption различной textDirection собственности.

Для QLineEdit единственный способ до сих пор отправляет этому виджету событие Qt :: Key_Direction_L/R .

Надеюсь, что это поможет.

+1

Спасибо. Я расширил QLineEdit и ввел в него следующий код: 'QKeyEvent e (QEvent :: KeyPress, Qt :: Key_Direction_R, 0); QApplication :: sendEvent (это, &e); 'Он отлично работает. –