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)子窗口(点击按钮后显示)