2014-05-24 141 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