Создание нового окна 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.
Основная проблема здесь заключается в том, что вы используете класс AnotherWindow, но не определили его в области видимости. Возможно, проблема связана с тем, что вы не включили заголовочный файл anotherwindow.h в mainwindow.cpp.
Чтобы исправить ошибку компиляции C2027, вам необходимо добавить #include "anotherwindow.h" в файл qt_window_1.cpp:
После этого пересоберите проект и проверьте, устранена ли ошибка.
Если проблема остается, убедитесь, что вы правильно настроили ваш проект в Visual Studio для работы с Qt. Убедитесь, что пути к инклюдам и библиотекам Qt правильно настроены в свойствах проекта.
Если это не помогло, попробуйте создать новый проект Qt в Qt Creator и проверьте, проявляется ли та же проблема.
Надеюсь, эти рекомендации помогут вам исправить ошибки при компиляции вашего проекта Qt в Visual Studio 2015.
Основная проблема здесь заключается в том, что вы используете класс 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.