Создание нового окна QT. Ошибки при компиляции. Как исправить? 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
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
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
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.

21 Авг 2019 в 06:22
304 +1
0
Ответы
1

Основная проблема здесь заключается в том, что вы используете класс AnotherWindow, но не определили его в области видимости. Возможно, проблема связана с тем, что вы не включили заголовочный файл anotherwindow.h в mainwindow.cpp.

Чтобы исправить ошибку компиляции C2027, вам необходимо добавить #include "anotherwindow.h" в файл qt_window_1.cpp:

#include "Header.h"
#include "anotherwindow.h"
#include "ui_mainwindow.h"

После этого пересоберите проект и проверьте, устранена ли ошибка.

Если проблема остается, убедитесь, что вы правильно настроили ваш проект в Visual Studio для работы с Qt. Убедитесь, что пути к инклюдам и библиотекам Qt правильно настроены в свойствах проекта.

Если это не помогло, попробуйте создать новый проект Qt в Qt Creator и проверьте, проявляется ли та же проблема.

Надеюсь, эти рекомендации помогут вам исправить ошибки при компиляции вашего проекта Qt в Visual Studio 2015.

20 Апр 2024 в 13:19
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир