Qt Designer中的自定义菜单操作

时间:2014-11-12 09:45:46

标签: c++ qt

我目前正在尝试使用Qt Designer构建GUI,我想自定义菜单操作的插槽。

E-g:我希望用户按下一个菜单操作,如果它被隐藏则显示一个小部件,如果它已经可见则隐藏它。

基本上,我想要做的是执行我的一些代码而不是默认操作,如show()或hide()。

所以我想知道我是否应该创建QMenuBar的子类,向其添加自定义插槽,然后创建一个插件以在Qt Designer中使用它,或者我是否应该为QMenu或QAction创建子类?或者这可能不是正确的方法吗?

我在Visual Studio下工作,我只使用Qt Designer,而不是Qt创建者。

我是GUI和Qt编程的新手,我在这里有点迷失。

提前致谢:)

3 个答案:

答案 0 :(得分:3)

你基本上有两个选择:

  1. 在Mainwindow sublcass中实现自定义逻辑 为此,您只需在类中添加处理所需的插槽,并在Qt Designer中使它们可用。你可以这样做:
    在信号/插槽编辑器中 ,然后单击“修改”,然后单击+符号。通过此,您可以在QtDesigner中创建新的插槽;
    当您的插槽被调用on_(senderName)_(signalName)时,,Qt自动装配将自动连接信号,您无需在代码或设计器中执行此操作。

  2. 创建一个QMenuBar子类并在那里实现自定义逻辑 您的案例告诉Qt Designer通过右键单击选择您的特定子类作为默认QMenuBar的替代,然后选择“Promote to ...”。在新对话框中,您可以指定将在实际代码中用作替换的自定义类,但在设计时使用QMenuBar。有了这个方法,您就不必编写单独的插件来使您的课程在Qt Designer中可用。

  3. 请注意,使用第二个选项时,只有在通过菜单栏触发操作时才会调用自定义逻辑,而不是通过快捷方式或工具按钮

答案 1 :(得分:0)

菜单栏会自动添加到从QMainWindow派生的任何新表单中(创建gui应用程序时的默认设置,但您可以使用file->新文件或项目创建新的主窗口...并选择Qt-> Qt设计师表格类。)

要为其添加选项,只需单击标有"在此处键入"的区域。并写下你的选项文字。执行此操作时,操作将显示在Qt Designer下部的列表中。右键单击该操作,然后选择"转到插槽"。它将弹出一个带有"触发()"的对话框。已经为你选择了。只需点击"确定"和Qt Creator会处理所有细节并将你带到插槽功能的主体。

答案 2 :(得分:0)

在班级中创建一个插槽:

onMenuActionTriggered()

使用connect()对行动信号作出反应:

connect(ui.myAction, SIGNAL(triggered()), this, SLOT(onMenuActionTriggered()));

在你的插槽中,你可以做任何你想做的事。

另一个解决方案(不是我最喜欢的解决方案,但可能)是使用自动连接功能,这意味着,通过声明一个插槽'on_myAction_triggered()'(其中myAction是您的QAction的名称),您不需要使用connect(),因为它是由Qt

自动连接的