Добрый вычер. Не получается привязать функцию к кнопке.
Есть 3 файла
1. main.cpp
2. other.cpp
3. header.cpp
main.cpp
#include "Header.h"
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget win;
QFileD ofd;
win.setWindowTitle("Hello");
QPushButton *ofdButton = new QPushButton("OPEN", &win);
QPushButton *startButton = new QPushButton("START", &win);
QPushButton *graphButton = new QPushButton("GRAPH", &win);
QPushButton *closeButton = new QPushButton("CLOSE", &win);
QHBoxLayout *layout = new QHBoxLayout(&win);
layout->addWidget(ofdButton);
layout->addWidget(startButton);
layout->addWidget(graphButton);
layout->addWidget(closeButton);
QString filename;
QObject::connect(ofdButton, SIGNAL(s_transmitter()), &win, SLOT(openFile(QString filename)));
QObject::connect(closeButton, SIGNAL(clicked(bool)), &win, SLOT(close()));
win.show();
return app.exec();
}
header.cpp
#pragma once
#include <QtWidgets/QApplication>
#include <QtWidgets>
#include <QtGui>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QApplication>
#include <QFileDialog>
#include <QDebug>
#include <QString>
#include <QDialog>
#include <QHBoxLayout>
#include <iostream>
using namespace std;
using namespace cv;
class QFileD : public QWidget
{
Q_OBJECT
public:
public slots:
void openFile(QString filename);
signals:
void s_transmitter();
};
other.cpp
#include "Header.h"
void QFileD::openFile(QString filename)
{
filename = QFileDialog::getOpenFileName(
this,
"Open Document",
QDir::currentPath(),
"All files (*.*) ;; Document files (*.doc *.rtf);; PNG files (*.png)");
if (!filename.isNull())
{
qDebug() << "selected file path : " << filename.toUtf8();
}
emit s_transmitter();
}
Сначала ругался на
signals:
s_transmitter();
Добавил void
signals:
void s_transmitter();
Стал ругаться кракозябрами с указанием на класс QfileD.
Нашел одно решение, заменить Qwidget на Йщиоусе
class QFileD : public Qwidget
на
class QFileD : public Qobject
но стали подсвечиваться все «this” как неправильные.
Вроде простая вещь, прицепить функцию к кнопке, а увяз на целый день