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 *parent = 0);
    ~Global();

public Q_SLOTS:
    void condButtonPressed();

private:
    Ui::Global *ui;
    PCLViewer *view;//创建类B的指针
};

#endif // GLOBAL_H

(2)源文件

#include "global.h"
#include "../build/ui_global.h"

Global::Global(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Global)    
{
    ui->setupUi(this);

    connect(ui->pushButton_cond, SIGNAL(clicked(bool)), this, SLOT(condButtonPressed()));
}

void Global::condButtonPressed()
{
    view = new PCLViewer(this) ;//将类指针实例化
    view->show();
}

Global::~Global()
{
    delete ui;
}

这个两个很简单的qt程序,其中PCLViewer是自定义的类,替换成你们自己的。
主要在于:
(1)引用自定义类的头文件
(2)添加自定义类的对象指针
(3)在槽函数里new一下这个对象

4.结果显示
(1)主窗口
这里写图片描述
(2)子窗口(点击按钮后显示)
这里写图片描述

  • 26
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
要实现在Qt点击按钮弹出窗口,可以按照以下步骤: 1. 创建一个新的窗口类,例如NewWindow类,继承自QWidget或QDialog。 2. 在窗口类(例如MainWindow类)创建一个QPushButton按钮,并为其添加一个点击事件的槽函数。 3. 在槽函数,创建一个NewWindow类的实例,并调用show()函数显示新窗口。 下面是一个简单的示例代码: ```cpp // mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "newwindow.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private: Ui::MainWindow *ui; private slots: void on_pushButton_clicked(); // 槽函数,处理按钮点击事件 }; #endif // MAINWINDOW_H ``` ```cpp // mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { NewWindow *newWindow = new NewWindow(); // 创建新窗口实例 newWindow->show(); // 显示新窗口 } ``` ```cpp // newwindow.h #ifndef NEWWINDOW_H #define NEWWINDOW_H #include <QWidget> QT_BEGIN_NAMESPACE namespace Ui { class NewWindow; } QT_END_NAMESPACE class NewWindow : public QWidget { Q_OBJECT public: NewWindow(QWidget *parent = nullptr); ~NewWindow(); private: Ui::NewWindow *ui; }; #endif // NEWWINDOW_H ``` ```cpp // newwindow.cpp #include "newwindow.h" #include "ui_newwindow.h" NewWindow::NewWindow(QWidget *parent) : QWidget(parent) , ui(new Ui::NewWindow) { ui->setupUi(this); } NewWindow::~NewWindow() { delete ui; } ``` 在这个示例窗口一个名为pushButton的按钮,当用户点击该按钮时,槽函数on_pushButton_clicked()会被调用。在该函数,我们创建了一个NewWindow的实例,并调用show()函数显示新窗口。 这里的NewWindow类只是一个简单的QWidget,你可以根据自己的需要自定义窗口的外观和功能。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值