单击按钮时运行功能

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 &lt;Eigen/Dense&gt; 在这个文件中。

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

3) 将 vA 作为 const 成员变量移动到此类中或在此处将它们设为静态。不过,最好将实现移动到您的 qtdemo.cpp 源文件中,并且只将声明留在标题中。

【讨论】:

谢谢:)。你会怎么建议做3)最方便? a 和 v 由 main.cpp 中的另一个函数生成 再次感谢。我还没有真正了解最后一部分,您会将实现的哪一部分移至 .cpp 文件?你到底会在标题中保留什么? @dreamer:你在 main.cpp 中有 vA,而你在这个头文件中需要它......将这些变量移动到这个头文件中,并从主文件中包含这个头文件。 cpp,无论如何您都需要这样做。 这似乎可行,但我仍然遇到的问题是coef(v,A) 的输出没有打印在界面中(我天真地尝试在coef() 中添加cout 语句功能,但这也不起作用)。有什么方法可以在函数调用后在界面中显示输出? @dreamer:例如添加一个 QLabel 并使用所需的字符串对其调用 setText(..) 方法。

以上是关于单击按钮时运行功能的主要内容,如果未能解决你的问题,请参考以下文章

单击按钮时中止正在运行的功能

功能未在按钮单击phonegap上运行

使 Pyqt 按钮在鼠标按下而不是鼠标按下时运行功能

onclick 功能自动运行

在按钮单击时运行 php 函数

单击应用程序按钮时立即运行音频文件 (Android)