在QT中单击按钮时调用函数

时间:2016-11-17 13:34:44

标签: c++ qt

我在这里看到了一些类似的问题,但我仍有问题。

我在QT中有一个按钮,我在main.cpp文件中定义了一个函数。当我按下QT按钮时,我想调用main.cpp中的函数并让该函数执行它的操作。

mainwindow.cpp:

void MainWindow::on_StartMotor_clicked()
{
    SendCmd(100);
}

main.cpp中:

void SendCmd(INT Value)
{
}

但是我收到了一个错误:

error: 'SendCmd' was not declared in this scope
     SendCmd(100);
                                             ^

我是QT的新手,所以我不认为我完全理解插槽和信号的事情。

谢谢!

1 个答案:

答案 0 :(得分:1)

这不是QT的问题,而是基本的C ++。因此,我的一般建议是购买一些好书并从基础开始学习这门语言。

在您的特定设置中,您有两个cpp文件。在这种情况下,它们被称为翻译单元,因为这些文件中的每一个都是单独编译的。结果就是所谓的目标文件(.obj)。链接器的作用是使另一个文件知道一个目标文件的功能。

现在,如果翻译单位知道其他翻译单位的功能声明,链接器只能完成他的工作。

通常,您会有一些包含此声明的头文件。

main.h:

void SendCmd(INT Value); // what type is INT by the way?

现在,main.cpp和mainwindow.cpp都应包含此文件。这样,您就不会收到编译器错误,因为mainwindow.cpp具有要调用此函数的声明。并且由于main.cpp被编译,链接器在其函数库中有一些该函数的实现,并且可以让mainwindow.cpp知道它。