2014-05-24 115 views
3

我正在使用Qt为视觉工作室添加。现在我使用Qt设计器创建了一个简单的按钮,并且我想使用该按钮,以便它在按下时运行带有特定输入参数的函数,然后显示该函数打印的结果。单击按钮时运行函数

,我要运行该函数使用eigen库,所以需要#include <Eigen/Dense>,应作如下叫:

void coef(Eigen::Matrix<long double, Dynamic, Dynamic> vector, Eigen::Matrix<long double, Dynamic, Dynamic> Matrix)

我做在Qt Designer中的按钮后,它会自动已添加一些代码我的头文件。 现在我调整这个头文件来执行以下操作:

#ifndef QTDEMO_H 

#define QTDEMO_H 

#include <QtWidgets/QMainWindow> 
#include "ui_qtdemo.h" 

class qtdemo : public QMainWindow 
{ 
    Q_OBJECT 

public: 
    qtdemo(QWidget *parent = 0); 
    ~qtdemo(); 

private: 
    Ui::qtdemoClass ui; 

// begin new code 
public slots: 
    void on_btnHello_clicked() { 
     ui.btnHello->coef(v, A); // v and A are defined in main.cpp, so not in this header file 
    } 
// end new code 

}; 

#endif // QTDEMO_H 

我知道,这当然会无法工作,因为

  1. 本征libary是未知的这个头,
  2. V及不明到这个头文件
  3. 3)函数coef()对于这个头文件是未知的。

但是,我对使用头文件没有经验,所以我不知道该怎么做才能使它工作。任何人都可以请帮忙?提前致谢。

+0

coef定义在哪里? QPushButton没有这样的方法。你创建了一个子类吗?如果是,为什么?如果不是,它甚至能如何工作? – lpapp

+0

@LaszloPapp在main.cpp – dreamer

+0

你能显示main.cpp吗? – lpapp

回答

2

你需要做到以下几点:

1)#include <Eigen/Dense>在这个文件中。

2)ui.btnHello->coef(v, A); - >coef(v, A);

3)移动vA为const成员变量到这个类或使它们在这里是静态的。虽然,最好将实现移动到qtdemo.cpp源文件中,并且只在头中留下声明。

+0

谢谢:)。你如何建议3)最轻松? A和v由main.cpp中的另一个函数生成 – dreamer

+0

再次感谢。我还没有真正掌握最后一部分,你将移到.cpp文件的哪一部分?你会在头文件中保留什么? – dreamer

+0

@dreamer:你在main.cpp中有'v'和'A',而你在这个头文件中需要它......将这些变量移动到这个头文件中,并将这个头文件包含在你需要做的main.cpp中无论如何。 – lpapp