Qt 主窗口点击按钮 弹出另一个自定义窗口

1.问题重述

这个其实是对C++类的理解程度有一定要求。
窗口1定义为类A,窗口2定义为类B,问题:如何点击窗口1中的按钮,打开窗口2.

2.问题思考
把类理解成数据类型,把窗口理解成类的实例。
只要在类A的定义中添加类B的定义和对象,编写适当的槽函数处理这个对象即可.

3.程序代码
(1)头文件

#ifndef GLOBAL_H
#define GLOBAL_H

#include <QMainWindow>//
#include "pclviewer.h"//必须引用类B的头文件

namespace Ui {
class Global;
}

class Global : public QMainWindow
{
    Q_OBJECT

public:
    explicit Global(QWidget *
### 回答1: 在Qt中,我们可以通过使用QMenu和QPushButton类来实现下方弹出子菜单。 首先,我们需要创建一个QMenu对象,表示我们要弹出的子菜单。然后,我们可以使用QMenu的addAction()方法来向子菜单中添加动作。每个动作都会显示为菜单中的一个选项。 接下来,我们可以创建一个QPushButton对象,表示需要添加子菜单的按钮。使用QPushButton的setMenu()方法,将上一步创建的QMenu对象设置为按钮的下拉菜单。 最后,我们需要在需要弹出子菜单的时候,通过调用QPushButton的showMenu()方法来显示子菜单。 下面是一个简单的示例代码,实现了一个带有下方弹出子菜单的QPushButton: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 创建一个子菜单 QMenu *subMenu = new QMenu("子菜单"); subMenu->addAction("动作1"); subMenu->addAction("动作2"); // 创建一个按钮 QPushButton *button = new QPushButton("按钮"); button->setMenu(subMenu); // 显示窗口 QWidget window; QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(button); window.setLayout(layout); window.show(); return app.exec(); } ``` 在这个示例中,我们创建了一个名为"子菜单"的QMenu对象,并向其添加了两个动作。然后,我们创建了一个QPushButton对象,将子菜单设置为按钮的下拉菜单。最后,我们通过调用按钮的showMenu()方法,在点击按钮时显示子菜单。 以上就是使用Qt实现下方弹出子菜单的简单方法。希望可以帮助到你! ### 回答2: 在Qt中,可以通过QMenu和QPushButton来实现按钮下方弹出子菜单的效果。具体步骤如下: 1. 创建一个QPushButton对象,作为主按钮。例如: QPushButton *mainButton = new QPushButton("主按钮"); 2. 创建一个QMenu对象,用于作为主按钮的子菜单。例如: QMenu *subMenu = new QMenu(); 3. 在子菜单中添加需要的子菜单项,使用addAction方法。例如: subMenu->addAction("子菜单项1"); subMenu->addAction("子菜单项2"); 4. 将子菜单设置给主按钮,使用setMenu方法。例如: mainButton->setMenu(subMenu); 5. 还可以设置主按钮弹出方式,使用setPopupMode方法。例如: mainButton->setPopupMode(QPushButton::InstantPopup); // 点击弹出 6. 最后,将主按钮添加到布局中显示即可。 在运行程序时,当点击按钮时,子菜单会在主按钮下方弹出显示,用户可以选择相应的子菜单项。 需要注意的是,该方法适用于Qt中的QWidget类及其子类的程序界面中,如果是其他程序界面库,具体方法和步骤可能会有所不同。 ### 回答3: 在Qt中,可以使用QMenu实现QPushButton下方弹出子菜单。首先,创建一个QPushButton和一个QMenu对象。然后,将QMenu对象设置为QPushButton的菜单。接下来,可以使用QMenu的addAction方法添加子菜单项。最后,通过调用QPushButton的showMenu方法,可以在按钮下方弹出子菜单。 下面是一个简单的示例代码: ```cpp #include <QtWidgets> int main(int argc, char *argv[]) { QApplication app(argc, argv); QMainWindow window; QWidget *centralWidget = new QWidget(&window); QVBoxLayout *layout = new QVBoxLayout; QPushButton *button = new QPushButton("按钮", centralWidget); QMenu *subMenu = new QMenu(button); subMenu->addAction("子菜单项1"); subMenu->addAction("子菜单项2"); button->setMenu(subMenu); layout->addWidget(button); centralWidget->setLayout(layout); window.setCentralWidget(centralWidget); window.show(); return app.exec(); } ``` 以上代码创建了一个包含一个QPushButton的主窗口。QPushButton设置了一个QMenu作为其菜单,其中包含两个子菜单项。运行程序后,点击按钮时,按钮下方将弹出一个子菜单,其中包含两个选项。 希望以上内容能帮到你!
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值