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