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)子窗口(點擊按鈕後顯示)