C++ 如何在rtl对齐中打开右侧的子菜单?
我有一个由项目和子菜单组成的菜单。项目的文本和标题应从右向左显示。我通过使用C++ 如何在rtl对齐中打开右侧的子菜单?,c++,qt,qml,qt-creator,qtquick2,C++,Qt,Qml,Qt Creator,Qtquick2,我有一个由项目和子菜单组成的菜单。项目的文本和标题应从右向左显示。我通过使用layoutmrirroring.enabled=true实现了这一点 Menu { id: right_menu property var rtl: true; MenuItem { text: "گزینه ۱" LayoutMirroring.enabled: true
layoutmrirroring.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
}
}
这是输出:
但是,这不是一个有效的输出,我想强制菜单打开右侧的子菜单,而不是左侧的子菜单。这是我正在寻找的输出:
如何实现这一点?我怀疑LayoutMirroring导致您的子菜单弹出到错误的位置。使用自定义文本组件并编辑文本的对齐方式,而不是使用LayoutMirroring来实现所需的文本格式。您可以使用
重叠
属性将子菜单移动到所需的位置
请注意,如果菜单位置过于靠近窗口的左边缘或右边缘,它仍将在另一侧打开
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
}
}
菜单{
id:右键菜单
属性var rtl:true;
梅努伊特姆{
正文:“گزینه۱”
LayoutMirroring.enabled:true
LayoutMirroring.childrenInherit:true
}
菜单{
标题:“تنظیمت”
重叠:width*2/多亏了@JarMan,如果你只想旋转菜单,他的解决方案就解决了这个问题(就像我的例子)。但是对于从右到左的语言,更好的解决方案是让你的整个应用程序从右到左;因为在从右到左的语言中,一切都应该是这样。
为此,您可以在项目的main.cpp
文件中添加以下行
app.setLayoutDirection(Qt::rightToLeft);
然后在任何其他项目或窗口中,添加以下行:
LayoutMirroring.enabled: Qt.application.layoutDirection == Qt.RightToLeft
LayoutMirroring.childrenInherit: Qt.application.layoutDirection == Qt.RightToLeft
不,这不是真的。无论layoutmrirroring
的值是什么,菜单总是在右侧打开。不,这不是真的。无论layoutmrirroring
的值是什么,菜单总是在右侧打开。哦,很抱歉听到这个消息,我误解了,以为你想在右侧打开它德,我得继续考虑这个