2012-06-12 28 views
2

我在RTL中使用Qt 4.7.4和我的应用程序语言。 我已经将应用程序布局设置为RightToLeft。 因此,除了QLineEdit中的占位符之外,所有内容现在都是正确的。Qt - 如何改变QLineEdit中占位符的方向?

我试过setAlignment方法 ,但它改变了文本和占位符的方向。 然后我试图setStylesheet,但它并不适用于

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

工作,我认为这是一个错误,有没有解决?

+0

您是否尝试过为每个'QLineEdit'小部件单独调用'setLayoutDirection(Qt :: RightToLeft)'?我不是说它会起作用... – TonyK

+0

@TonyK:谢谢,我试过了,但它不起作用。 –

回答

2

为4.7版本更改日志的内容如下:

QWidget的:: setLayoutDirection不再影响基于的QTextEdit,QLineEdit的 和窗口小部件的(QT :: LeftToRight或Qt的::从右至左)的文本布局 方向在他们。

现在通过键盘布局和 文本语言(符合Unicode标准)检测到默认文本布局方向 (Qt :: LayoutDirectionAuto)。

要 编程方式迫使一个QTextEdit的文字方向,可以 改变与 部件具有不同的textDirection财产的新QTextOption相关联的另外,QTextDocument的defaultTextOption。

对于QLineEdit,目前唯一的方法是向该窗口小部件发送一个Qt :: Key_Direction_L/R 键盘事件。

希望有所帮助。

+1

谢谢。我扩展了QLineEdit并将下面的代码放在里面:'QKeyEvent e(QEvent :: KeyPress,Qt :: Key_Direction_R,0); QApplication :: sendEvent(this,&e);'它的效果非常好。 –