单击按钮时运行功能
Posted
技术标签:
【中文标题】单击按钮时运行功能【英文标题】:Run function when push button is clicked 【发布时间】:2014-05-24 16:11:08 【问题描述】:我正在为 Visual Studio 使用 Qt 插件。现在我使用 Qt 设计器制作了一个简单的按钮,我想使用该按钮,以便在按下时运行具有特定输入参数的函数,然后显示该函数打印的结果。
我要运行的函数使用eigen
库,因此需要#include <Eigen/Dense>
,应按如下方式调用:
void coef(Eigen::Matrix<long double, Dynamic, Dynamic> vector, Eigen::Matrix<long double, Dynamic, Dynamic> Matrix)
在我在 Qt 设计器中创建按钮后,它已经自动将一些代码添加到我的头文件中。 现在我将此头文件调整为以下内容:
#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
我知道这当然行不通,因为
-
此标头不知道 Eigen 库,
v 和 A 对此标头未知
3) 此头文件不知道函数 coef()。
但是,我对使用头文件没有经验,所以我不知道该怎么做才能使它工作。有人可以帮忙吗?提前致谢。
【问题讨论】:
coef 是在哪里定义的? QPushButton 没有这样的方法。你创建了一个子类吗?如果是,为什么?如果没有,它怎么可能工作? @LaszloPapp 在 main.cpp 中 能否请您显示main.cpp? @Sure,但它仅包含 coef 函数以及Eigen
使其工作所需的标头。
它还必须具有主要功能,方法是使用您的 qtdemo 子类和包围的 QApplication。 ;)
【参考方案1】:
您需要执行以下操作:
1) #include <Eigen/Dense>
在这个文件中。
2) ui.btnHello->coef(v, A);
-> coef(v, A);
3) 将 v
和 A
作为 const 成员变量移动到此类中或在此处将它们设为静态。不过,最好将实现移动到您的 qtdemo.cpp 源文件中,并且只将声明留在标题中。
【讨论】:
谢谢:)。你会怎么建议做3)最方便? a 和 v 由 main.cpp 中的另一个函数生成 再次感谢。我还没有真正了解最后一部分,您会将实现的哪一部分移至 .cpp 文件?你到底会在标题中保留什么? @dreamer:你在 main.cpp 中有v
和 A
,而你在这个头文件中需要它......将这些变量移动到这个头文件中,并从主文件中包含这个头文件。 cpp,无论如何您都需要这样做。
这似乎可行,但我仍然遇到的问题是coef(v,A)
的输出没有打印在界面中(我天真地尝试在coef()
中添加cout
语句功能,但这也不起作用)。有什么方法可以在函数调用后在界面中显示输出?
@dreamer:例如添加一个 QLabel 并使用所需的字符串对其调用 setText(..) 方法。以上是关于单击按钮时运行功能的主要内容,如果未能解决你的问题,请参考以下文章