qt QMenuBar如何不使用右边箭头
时间: 2023-08-22 10:09:00 浏览: 161
在 Qt 中,QMenuBar 默认使用右侧箭头表示菜单项包含子菜单。如果您不想使用右侧箭头,可以使用样式表来修改其样式。下面是一个简单的示例,演示如何使用样式表隐藏 QMenuBar 中菜单项的右侧箭头:
```
QMenuBar::item:indicator {
subcontrol-origin: padding;
subcontrol-position: center right;
width: 0;
}
```
在这个样式表中,我们将菜单项的指示器的宽度设置为 0,这将隐藏右侧箭头。如果您想要保留一些间距,可以调整 subcontrol-origin 和 subcontrol-position 属性的值。
请注意,这个样式表将影响到 QMenuBar 中的所有菜单项,而不仅仅是您想要隐藏箭头的菜单项。如果您只想隐藏某些菜单项的箭头,请考虑使用 QMenu::setStyleSheet() 函数设置单独的样式表。
相关问题
qt QMenuBar取消右边箭头
您可以通过设置样式表来取消 QMenuBar 右侧箭头的显示。可以使用以下代码:
```
QMenuBar::item {
padding-right: 20px; /* adjust the value as needed */
}
QMenuBar::item:indicator {
subcontrol-origin: padding;
subcontrol-position: right;
width: 0;
}
```
这将通过将指示器的宽度设置为零来隐藏箭头,并通过增加项目的右填充来避免文本与指示器之间的重叠。请注意,这可能会影响到您的应用程序中的其他 QMenuBar 实例,因此您可能需要根据需要进行更改。
qt 为什么QMenuBar添加QMenu后QMenu在QMenuBar的右边箭头里
在 Qt 中,QMenuBar 默认使用右侧箭头表示菜单项包含子菜单。当您向 QMenuBar 添加 QMenu 时,QMenu 将会被添加到 QMenuBar 的右侧箭头中。这是因为 QMenu 是 QMenuBar 的子类,因此 QMenuBar 将其视为一个特殊的菜单项,而不是一个独立的菜单。
如果您不想在右侧箭头中添加 QMenu,可以将 QMenu 添加到 QMenuBar 中,然后将其设置为顶级菜单。例如:
```
QMenuBar* menuBar = new QMenuBar(parent);
QMenu* fileMenu = new QMenu("File", menuBar);
menuBar->addMenu(fileMenu);
fileMenu->setParent(0); // set as top-level menu
```
在这个例子中,我们首先创建了一个 QMenuBar,然后创建了一个 QMenu,将其添加到 QMenuBar 中。接下来,我们将 QMenu 的父项设置为 0,这将使其成为 QMenuBar 的顶级菜单,而不是将其添加到右侧箭头中。
请注意,将 QMenu 设置为顶级菜单可能会对您的应用程序造成一些影响,因为它将不再与其他菜单项一起显示。如果您只想移动 QMenu 的位置,而不是将其作为一个独立的顶级菜单显示,请考虑使用样式表来修改其位置。
阅读全文