我有一个菜单,其中包含项目和子菜单。项目的文本和标题应从右到左显示。我通过使用LayoutMirroring.enabled = true
实现了这一目标。
Menu {
id: right_menu
property var rtl: true;
MenuItem {
text: "گزینه ۱"
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
}
Menu {
title: "تنظیمات"
MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
text: "گزینه ۱"
}
MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
text: "گزینه ۱"
}
}
delegate: MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
}
}
这是输出:
但是,这不是有效的输出,我想强制菜单在右侧而不是左侧打开子菜单。这是我正在寻找的输出:
我该如何实现?
答案 0 :(得分:3)
您可以使用overlap
属性将子菜单移至所需位置。
请注意,如果菜单的位置距离窗口的左边缘或右边缘太近,它将在另一侧打开。
Menu {
id: right_menu
property var rtl: true;
MenuItem {
text: "گزینه ۱"
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
}
Menu {
title: "تنظیمات"
overlap: width * 2 // <<-- Shift the submenu over
MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
text: "گزینه ۱"
}
MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
text: "گزینه ۱"
}
}
delegate: MenuItem {
LayoutMirroring.enabled: true
LayoutMirroring.childrenInherit: true
}
}
答案 1 :(得分:1)
由于@JarMan,他的解决方案解决了如果只想旋转菜单的问题(就像我这样)。但是从右到左语言的一个更好的解决方案是使整个应用程序从右到左。因为使用从右到左的语言,所有内容都应采用这种方式。
为此,您可以在项目的import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var valueVcc: UITextField!
@IBOutlet weak var valueBeta: UITextField!
@IBOutlet weak var valueR1: UITextField!
@IBOutlet weak var valueR2: UITextField!
@IBOutlet weak var valueRc: UITextField!
@IBOutlet weak var valueRe: UITextField!
@IBOutlet weak var valueVce: UITextField!
@IBOutlet weak var results: UITextField!
var Ic = -1 // set initial value for Ic
//var R1 = Float(valueR1.text)
// var R2 = Float(valueR2.text)
// var Vcc = Float(valueVcc.text)
// var Vb = (Vcc * (R1 / (R1 + R2)))
@IBAction func buttonR1R2(_ sender: UIButton) {
var ans = (Float(valueR1.text) / Float(valueR2.text)) // error on this line
if (!valueR1.text!.isEmpty && !valueR2.text!.isEmpty && !valueVcc.text!.isEmpty) {
results.text = "Values Entered"
} else {
results.text = "Enter some values for Vcc,R1 and R2"
}// end of if statement
} //end of func buttonR1R2
@IBAction func buttonIcCalc(_ sender: UIButton) {
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
文件中添加以下行。
main.cpp
,然后在其他任何项目或窗口中,添加以下行:
app.setLayoutDirection(Qt::rightToLeft);
答案 2 :(得分:0)
我怀疑LayoutMirroring导致您的子菜单在错误的位置弹出。不用使用LayoutMirroring来实现所需的文本格式,而是使用自定义文本组件并在此处编辑文本的对齐方式。