Qt 6之五:创建菜单
Qt是一种跨平台的C++应用程序开发框架,它提供了一套丰富的工具和库,可以帮助开发者快速构建跨平台的应用程序,用于开发图形用户界面(GUI)和非GUI应用程序。
Qt 6之一:简介、安装与简单使用 https://blog.csdn.net/cnds123/article/details/130730203
Qt 6之二:项目的结构、资源文件的使用https://blog.csdn.net/cnds123/article/details/130741807
Qt 6之三: 项目的发布 https://blog.csdn.net/cnds123/article/details/130827966
Qt 6之四:基础概念讲解https://blog.csdn.net/cnds123/article/details/135401606
创建简单菜单程序
Qt 6,如何用Qt Creator 10创建菜单程序
现在,有两种方式设计菜单:
通过代码实现菜单的方式
通过户界面设计器设计菜单
下面以这个如下图简单的示例分别讲解两种实现方式:
一)通过代码实现菜单的方式
先创建新项目ch03,打开 Qt Creator 10,点击 “File” -> “New File or Project”。
在 “New Project” 对话框中,选择 “Qt Widgets Application”,然后点击 “Choose”。然后按照向导提示创建新项目(我这里,初项目名设置为ch03,其他向导按默认),参见下图:
打开 mainwindow.cpp 文件,找到 MainWindow 构造函数。在这个函数中,你可以添加以下代码来创建菜单:
// 创建 "File" 菜单
QMenu* fileMenu = menuBar()->addMenu(tr("&File"));// 创建 "Open" 动作并添加到 "File" 菜单
QAction* openAction = fileMenu->addAction(tr("&Open"));
connect(openAction, &QAction::triggered, this, &MainWindow::onOpen);// 创建 "Exit" 动作并添加到 "File" 菜单
QAction* exitAction = fileMenu->addAction(tr("E&xit"));
connect(exitAction, &QAction::triggered, this, &MainWindow::close);// 创建 "Edit" 菜单
QMenu* editMenu = menuBar()->addMenu(tr("&Edit"));// 创建 "Copy" 动作并添加到 "Edit" 菜单
QAction* copyAction = editMenu->addAction(tr("&Copy"));
connect(copyAction, &QAction::triggered, this, &MainWindow::onCopy);
实现动作槽函数:然后你需要在 MainWindow 类中实现 onOpen 和 onCopy 槽函数。这些函数会在用户选择相应的菜单项时被调用。你可以根据需要实现这些函数,例如:
void MainWindow::onOpen()
{// 实现 "Open" 动作qDebug() << "Open action triggered";
}void MainWindow::onCopy()
{// 实现 "Copy" 动作qDebug() << "Copy action triggered";
}
这里进行了简化,上述代码在用户选择 "Open" 或 "Copy" 菜单项时打印一条调试信息。在实际应用中,你需要在这些函数中实现相应的功能。
为方便新手学习,下面给出添加图示:
你还需要在 mainwindow.h 中添加这槽函数的声明,具体位置是在
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
之前,添加
//添加槽函数的声明
private slots:void onOpen(); // 在这里添加 onOpen 槽函数的声明void onCopy(); // 在这里添加 onCopy 槽函数的声明
这是因为在 Qt 中,槽函数必须在类的声明中使用 Q_SLOTS 宏(或者其等价的 slots 宏)声明,否则 Qt 元对象系统会找不到这些槽函数。为方便新手学习,下面给出添加图示:
二)通过户界面设计器设计菜单
先创建新项目ch03,打开 Qt Creator 10,点击 “File” -> “New File or Project”。
在 “New Project” 对话框中,选择 “Qt Widgets Application”,然后点击 “Choose”。然后按照向导提示创建新项目(我这里,初项目名设置为ch03,其他向导按默认),参见下图:
1、打开用户界面设计器:在项目浏览器中,找到 mainwindow.ui 文件并双击它。这会打开用户界面设计器。
2、添加菜单栏:在设计器中,你应该已经看到了一个名为 "MainWindow" 的窗口。在窗口的顶部,有一个名为 "Type here" 的灰色条,这就是菜单栏(QMenuBar)。双击击这个灰色条,然后在出现的输入框中输入你想要的菜单名称,例如 "File"回车。
用类似的方法添加菜单项。
File的子菜单 objectName属性值
Open actionOpen
Exit actionExit
Edit的子菜单
Copy actionCopy
在设计过程中,可以使用快捷键Ctrl+R对窗口进行预览。
3、连接菜单项信号和槽,对于菜单项 (QAction) ,Qt Creator 不提供直接创建槽函数的 GUI 方法。你需要手动进行以下步骤:
3、连接菜单项信号和槽,对于菜单项 (QAction) ,Qt Creator 不提供直接创建槽函数的 GUI 方法。你需要手动进行以下步骤:
在 mainwindow.h 中声明槽函数,具体位置是在:
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
之前,添加:
private slots:void onOpen(); // 在这里添加 onOpen 槽函数的声明void onCopy(); // 在这里添加 onCopy 槽函数的声明 void onExit(); // 在这里添加 onExit 槽函数的声明
为方便新手学习,下面给出添加图示:
在 mainwindow.cpp 中定义这些槽函数:
void MainWindow::onOpen()
{qDebug() << "Open action triggered";
}void MainWindow::onCopy()
{qDebug() << "Copy action triggered";
}void MainWindow::onExit()
{close();
}
这里进行了简化,上述代码在用户选择 "Open" 或 "Copy" 菜单项时打印一条调试信息, 在实际应用中,你需要在这些函数中实现相应的功能。 "Exit" 菜单关闭窗体。
在 mainwindow.cpp 的构造函数中,还要建立 QAction 和槽函数的关联。请找到
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
在ui->setupUi(this);之后,添加如下几句:
//建立 QAction 和槽函数的关联connect(ui->actionOpen, &QAction::triggered, this, &MainWindow::onOpen);connect(ui->actionCopy, &QAction::triggered, this, &MainWindow::onCopy);connect(ui->actionExit, &QAction::triggered, this, &MainWindow::onExit); // 添加
这样,当你在运行的程序中点击 "Open" 、 "Copy" 或"Exit"菜单项时,就会调用相应的槽函数。
为方便新手学习,下面给出添加图示:
Qt程序菜单(通过代码创建)视频https://www.bilibili.com/video/BV1uz4y1y7Eu/
Qt程序菜单2(通过UI文件创建)视频https://www.bilibili.com/video/BV1ft4y1e7hD/
三)简单记事本例子
文件菜单包括:打开、保存、清除、关闭。
为 文本编辑区域TextEdit添加右键菜单以实现复制和粘贴功能。
待续