Windows 7x64, QT 5.6.2 MSVC15, Visual Studio 2015 Community.
Брал пример отсюда -
https://evileg.com/ru/post/112/
Добавил всё как сказано, но видимо специфика visual studio 2015. Выводит следующие ошибки:
- Ошибка компиляции C2027 (Использование неопределенного типа «UI::AnotherWindow»
- Ошибка компиляции C2027 (Использование неопределенного типа «UI::AnotherWindow»
- Ошибка C2227 выражение слева от "->setupUi" должно указывать на тип класса, структуры или объединения либо на универсальный тип
main.cpp
#include "Header.h"
using namespace std;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWindow;
mainWindow.show();
return app.exec();
}
Header.h
#include <anotherwindow.h>
#include <QtWidgets/QApplication>
#include <QtWidgets>
#include <QtGui>
#include <QLabel>
#include <QPushButton>
#include <QLineEdit>
#include <QApplication>
#include <QFileDialog>
#include <QFileInfo>
#include <QDebug>
#include <QString>
#include <QDialog>
#include <QHBoxLayout>
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void handleButton();
void openFile();
private:
Ui::MainWindow *ui;
AnotherWindow *sWindow;
QPushButton *ofd_button;
QPushButton *close_button;
QPushButton *manual_ofd_button;
};
qt_window_1.cpp
#include "Header.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// Инициализируем второе окно
sWindow = new AnotherWindow();
// подключаем к слоту запуска главного окна по кнопке во втором окне
connect(sWindow, &AnotherWindow::firstWindow, this, &MainWindow::show);
// создаем кнопку
ofd_button = new QPushButton("AUTO", this);
ofd_button->setGeometry(QRect(QPoint(20, 20),QSize(70, 30)));
manual_ofd_button = new QPushButton("MANUAL", this);
manual_ofd_button->setGeometry(QRect(QPoint(20, 60), QSize(70, 30)));
close_button = new QPushButton("CLOSE", this);
close_button->setGeometry(QRect(QPoint(20, 100), QSize(70, 30)));
connect(ofd_button, SIGNAL(released()), this, SLOT(openFile()));
connect(manual_ofd_button, SIGNAL(released()), this, SLOT(handleButton()));
connect(close_button, SIGNAL(clicked(bool)), this, SLOT(close()));
}
anotherwindow.cpp
#include "anotherwindow.h"
#include "ui_anotherwindow.h"
AnotherWindow::AnotherWindow(QWidget *parent) :
QWidget(parent),
ui(new Ui::AnotherWindow)
{
ui->setupUi(this);
}
AnotherWindow::~AnotherWindow()
{
delete ui;
}
void AnotherWindow::on_pushButton_clicked()
{
this->close(); // Закрываем окно
emit firstWindow(); // И вызываем сигнал на открытие главного окна
}
anotherwindow.h
//#pragma once
#ifndef ANOTHERWINDOW_H
#define ANOTHERWINDOW_H
#include <QWidget>
namespace Ui {
class AnotherWindow;
}
class AnotherWindow : public QWidget
{
Q_OBJECT
public:
explicit AnotherWindow(QWidget *parent = 0);
~AnotherWindow();
signals:
void firstWindow(); // Сигнал для первого окна на открытие
private slots:
// Слот-обработчик нажатия кнопки
void on_pushButton_clicked();
private:
Ui::AnotherWindow *ui;
};
#endif ANOTHERWINDOW_H
Не могу понять в чём ошибка, как я понял пример создавался в qt creator. На сайте и на ютубе в комментах таких ошибок не было, видимо ошибка не возникает если это использовать в qt creator.