QT 窗口模式禁用菜单中的操作
QT Window Modality disables actions in menu
我正在macOS上开发一个桌面应用程序。我有一个类是QMainWindow的一个子类。在这个窗口中有许多码头小部件。我需要将WindowModality设置为WindowModal,因此用户无法与其他打开的窗口进行交互。但是我的窗口有一个菜单栏,里面有许多菜单,里面有一些QActions,当我设置WindowModality(Qt::WindowModal(时,它会自动禁用菜单中的每个操作,我需要启用它们。
任何人都可以为此提供一些简单的解决方案吗?还是不可能?
谢谢。
编辑:
我的应用程序中有很多窗口。我有一个真正的主窗口,您可以从中打开另一个窗口,也可以从该窗口打开另一个窗口。这是我需要我的子窗口是模态的情况。但它们也有自己的菜单栏,当窗口模式打开时会自动禁用。我已经在谷歌上搜索了 10 个小时,没有任何解决方案。我无法测试它,但我想在 Windows 上菜单栏不会禁用,因为本机菜单完全不同。
如果没有使用QWindow
的特定需求,那么使用QDialog
类会更容易实现这一点。使用QDialog
您可以使用exec()
方法简单地将对话框显示为模式。
编辑:基本上,您可以使用QLayout::setMenuBar
方法将QMenuBar
元素添加到每个QLayout
类对象。 如果要将菜单栏添加到QDialog
,则必须为对话框设置布局,然后以编程方式创建所需的QMenuBar
对象并将其传递给QDialog
布局(您可以使用QDialog::layout
方法访问(。下面简单的例子:
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
QMenuBar* menu = new QMenuBar();
QMenu* fileMenu = menu->addMenu("File"); //Create 'File' menu inside menu bar
QAction* closeAction = fileMenu->addAction("Close"); //Create 'Close' action in 'File' menu
connect(closeAction, QAction::triggered, this, close); //Close dialog after triggering 'Close' action
layout()->setMenuBar(menu); //Add menu bar to QDialog layout
}
请考虑Qt::ApplicationModal的用法。
这保留了模态,但在 MAC 上为您提供了其他行为。
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 重载操作程序时出错>>用于类中的字符串 memebr
- 无法获取菜单选择以运行函数.C++
- 对字符串进行位操作
- 我可以在 C++ 中的函数体之外进行操作吗?
- MPI突然停止了对多个核心的操作
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 对字符数组中的元素执行逐位操作
- QT 窗口模式禁用菜单中的操作
- 菜单打开时,菜单中的C QT操作不会由键盘快捷键触发
- 提取接收功能或插槽中的菜单操作数据
- 菜单操作连接找不到插槽
- 如何在Qt中获取文件系统操作的上下文菜单
- 如何替换菜单中的操作
- 如何在Qt中将值传递给菜单操作
- Qt 设计器中的自定义菜单操作
- 操作菜单按钮选择bb10
- 在单独的 GUI 类(菜单、工具栏等)之间共享操作的最佳方式是什么
- c++添加操作菜单
- 如何为在运行时构造的菜单正确设置通用 QT 操作