qt中mainwindow.cpp从其他文件中调用函数时报错找不到标识符

一开始在mainwindow中定义了很多函数,后来觉得内容太多就新建了一个tools.h来存放这些函数,tools.cpp中写了这些函数的内容。在mainwindow中添加了#include <tools.h>,但里面从tools中调用的函数是灰色的,报错找不到标识符。刚学不久求解答,必采纳。

img

不需要把声明也写到 tool.h 中,只要把实现写到 tool.cpp 中,就还可以调用

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: QT实现一个图片透视变换的小玩意中的 4. main.cpp 文件没变,主要修改mainwindow.h 和mainwindow.cpp文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    mainwindow.h 文件如下

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QFileDialog>
    #include <opencv2/opencv.hpp>
    using namespace cv;
    
    namespace Ui {
    class MainWindow;
    }
    class QLabel;
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
        void DisplayMat(cv::Mat image);
        void mousePressEvent(QMouseEvent *event);
        //void paintEvent(QPaintEvent *event);
        bool eventFilter(QObject *watched, QEvent *event);
        Mat perspectivetransfer(Mat srcImage);
    
    signals:
        void button_click_update();
    public slots:
        void drawRedCircle();
        //void drawRedPoint(int x,int y);
        void on_actionAbout_triggered();
        void on_actionSpecifications_triggered();
    
    private slots:
        void on_pushButton_open_clicked();
    
        void on_pushButton_choose_clicked(bool checked);
    
        void on_pushButton_perspective_clicked();
    
        void on_pushButton_save_clicked();
    
    private:
        Ui::MainWindow *ui;
        cv::Mat image;
        QLabel *label;
        int count;//initial for corners order
        int point_x = 10;
        int point_y = 10;
        Point point_lt,point_rt,point_rb,point_lb;
        Mat src_resize;
        Mat save_image;
    };
    
    #endif // MAINWINDOW_H
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你在mainwindow里使用的函数例如FindTickFrom2都是类tools里的私有槽函数,在类外肯定没法直接调用类里面的私有槽函数呀,你可以把槽函数设置为public,然后通过创建tools的对象,在mainwindow里发出信号,然后通过connect连接信号,接收对象为创建tools的对象,连接tools的槽函数。