在选定的 QMenu 项目上显示刻度图像
Display tick image on selected QMenu item
我想在从我的QMenu
中选择特定项目时显示一个勾号项目。 目前它显示菜单,但我还需要保持踢,以便下次用户可以知道之前选择了哪个。
QMenu *preferenceMenu = new QMenu();
preferenceMenu = editMenu->addMenu(tr("&Preferences"));
QMenu *Mode1 = new QMenu();
Mode1 = preferenceMenu->addMenu(tr("&Mode 1"));
Mode1->addAction(new QAction(tr("&Menu1"), this));
QMenu *Mode2 = new QMenu();
Mode2 = preferenceMenu->addMenu(tr("&Mode 2"));
Mode2->addAction(new QAction(tr("&Menu2"), this));
Mode2->addAction(new QAction(tr("&Menu3"), this));
在QAction
我称之为插槽slotActionTriggered(QAction* actionSelected)
.
void csTitleBar::slotActionTriggered(QAction* actionSelected)
{
actionSelected->setChecked(true);
}
在这里,如果我选择Menu3
,勾号也应该出现在Menu3
的右侧,稍后如果我更改为Menu2
,勾号应该显示在Menu2
上并从Menu3
中消失。
请给出一些想法,Qt是否有一些默认方法,或者我需要保留小部件或图像。
您必须通过QAction::setCheckable
检查操作。
QMenu *Mode2 = new QMenu();
Mode2 = preferenceMenu->addMenu(tr("&Mode 2"));
Mode2->addAction(new QAction(tr("&Menu2"), this));
Mode2->actions().back()->setCheckable(true);
Mode2->addAction(new QAction(tr("&Menu3"), this));
Mode2->actions().back()->setCheckable(true);
此外,在您的情况下,无需手动检查操作,将它们标记为可检查已经完成了工作。
正如 @G.M. 所提到的,要使它们中的一些相互排斥,您必须为每个集合创建一个QActionGroup
(在您的情况下Menu2
和Menu3
(。只需将操作组设置为操作的父级或调用QActionGroup::addAction
即可。
QMenu* Mode2 = new QMenu();
QActionGroup* Mode2ActionGroup = new QActionGroup(Mode2);
Mode2 = preferenceMenu->addMenu(tr("&Mode 2"));
Mode2->addAction(new QAction(tr("&Menu2"), Mode2ActionGroup));
Mode2->actions().back()->setCheckable(true);
Mode2->addAction(new QAction(tr("&Menu3"), Mode2ActionGroup));
Mode2->actions().back()->setCheckable(true);
PS:虽然链接重定向到Qt 5.xx文档,但解决方案在Qt 4.8和Qt 5.xx中都有效。
相关文章:
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 我在 OpenGL 中显示图像时遇到问题
- 无法在 Opencv 中显示图像导致内存位置
- 从C++调用网络摄像头并在 Python 中显示图像
- C++列出屏幕以在第二台显示器中显示图像
- 如何用QT显示图像
- 如何在 QGraphicsView 中显示图像
- C++/openCV - 为什么显示图像会产生 Linux 分割错误?(打开CV错误?
- 在C 中显示图像及其元数据
- C++显示图像并将其保持到下一张图像的最佳方法
- 如何使用SDL_surface在用户定义的矩形上显示图像?
- 如何使用QVector的QPixmap显示图像?
- 如何在任何使用 Opencv 的计算机上显示图像
- 使用 qt 和 opengl、定时精度和垂直同步问题、c++ 显示图像
- QLabel像视频一样显示图像
- 使用 c++ 显示图像
- Qt表查看单元格中的显示图像并在单击时获取路径
- 在Visual C 控制台应用程序中显示图像
- 如何使用Createbsection显示图像