Создание нового окна 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
283 +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
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 96 005 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир