Roy*_*rau 0 qt qt4 pyside python-2.7
我正在尝试更改 QMenu 上标签/文本的样式和/或字体,而不影响它的子项。我使用 PySide 在 Python 中执行此操作(其工作方式与 Qt 类似)。
我试过了:
menu = QtGui.QMenu()
f = menu.font()
f.setBold(True)
menu.setFont(f)
Run Code Online (Sandbox Code Playgroud)
和
menu = QtGui.QMenu()
menu.setStyleSheet("QMenu{font-weight: bold;}")
Run Code Online (Sandbox Code Playgroud)
这两者都不会更改菜单本身的标签,但会对其所有子项执行此操作。
我更愿意直接在 QMenu (或另一个类,如果它的行为类似并且使其成为可能)上设置样式,而不是在其父级上应用样式表。
目标
我的想法是,我有一个带有各种子菜单的菜单(这些子菜单在某种程度上是基于服务器上的文件夹的动态),其中一些需要是粗体,一些是斜体。因此,我想动态添加这些子 QMenu 并相应地设置它们的样式。
您可以轻松实现。理解逻辑:
QMenu- 是一个显示项目的小部件QMenu到另一个时QMenu QMenu::menuAction,它被放置在基本菜单中。menuAction.因此,要使菜单加粗,您只需menuAction将此菜单设置为粗体字体即可。
这是一个简单的工作示例:
QMenu m; //base menu
QMenu sub; //sub menu
sub.setTitle("subMenu");
QAction* a1 = new QAction("act1", &m);
QAction* a2 = new QAction("act2", &m);
QAction* a3 = new QAction("act3", &m);
// set a bold font for a sub menu item
QFont f = sub.menuAction()->font();
f.setBold(true);
sub.menuAction()->setFont(f);
// add an action to the sub menu
sub.addAction(a3);
// add two actions and the sub menu to the base menu
m.addAction(a1);
m.addMenu(&sub);
m.addAction(a2);
// show the base menu
m.exec(QCursor::pos());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3852 次 |
| 最近记录: |