BB
Bacekac B23 октября 2016 г. 10:06

Как протестировать QMainWind форму?(т.е. "отвязать" ее от основного *.ехе файла)

QMainWindow

Здравствуйте,
У меня вопрос по работе с файлами формы(*.h и *.cpp)- а вернее доступу к ним. Когда мы создаем проект имеющий форму типа QMainWindow, то автоматически получаем main.cpp файл вида:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

А файл формы mainwindow.cpp в свою очередь содержит следующие инклуды:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>......

Пусть форма содержит несколько кнопок управления, лабелов отображения и методов для определенных вычислений запускаемых упомянутыми кнопками.

Задача состоит в следующем- протестировать созданную форму и ее методы в отдельном тестовом проекте. Для этого необходимо получить доступ к mainwindow.h и mainwindow.cpp.
Пробовал добавить оба файла к тест проекту, но компилятор ругается на “несуществующий” #include “ui_mainwindow.h” находящийся в mainwindow.cpp.
Я так понимаю необходимо MainWindow каким-то образом отвязать их от main.cpp или как?
Вопрос: как получить доступ к форме(mainform.h и mainform.cpp) из другого проекта?


Заранее благодарен,
Василий

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

3
Evgenii Legotckoi
  • 24 октября 2016 г. 0:29

Добрый день. Вообще ui_mainwindow.h – это автоматически генерируемый файл. Его можно найти в папке сборки. А вот насчёт тестирования, Вы пишете Unit-тест? Думаю, что это будет весьма проблематично ввиду как раз того, что файл генерируется автоматически. Впрочем. Можете попробовать собрать проект, а потом уже в папке сборки найти необходимый ui_mainwindow.h файл. Без него всё равно не получится сделать тест, поскольку там создаётся такой же C++ код со всеми необходимыми виджетами.

    BB
    • 25 октября 2016 г. 4:59
    • Ответ был помечен как решение.
    Доброго времени суток,
    Спасибо за совет. Действительно, добавление ui_mainwindow.h в папку с тестирующим проектом позволяет получить доступ к форме (т.е.методам основной формы). Но копирование файла в другую папку, я так понимаю, “топорный” метод. Пробовал прописать ui_mainwindow.h в HEADER’ах *.pro файла (в окне проекта он появился), но при компиляции все равно ошибка на несуществующий файл.
    Не подскажите как правильно ui_mainwindow.h “прикрутить” к тестирующему проекту?
      Evgenii Legotckoi
      • 25 октября 2016 г. 8:16
      Два дурацких вопроса:
      1) Нет ли в пути к файлу кириллицы?
      2) Очистить проект или вообще удалить build папку перед повторной сборкой не пробовали?

        Комментарии

        Только авторизованные пользователи могут публиковать комментарии.
        Пожалуйста, авторизуйтесь или зарегистрируйтесь
        B

        C++ - Тест 002. Константы

        • Результат:16баллов,
        • Очки рейтинга-10
        B

        C++ - Тест 001. Первая программа и типы данных

        • Результат:46баллов,
        • Очки рейтинга-6
        FL

        C++ - Тест 006. Перечисления

        • Результат:80баллов,
        • Очки рейтинга4
        Последние комментарии
        k
        kmssr9 февраля 2024 г. 5:43
        Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
        АК
        Анатолий Кононенко5 февраля 2024 г. 12:50
        Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
        EVA
        EVA25 декабря 2023 г. 21:30
        Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
        J
        JonnyJo25 декабря 2023 г. 19:38
        Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
        G
        Gvozdik19 декабря 2023 г. 8:01
        Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
        Сейчас обсуждают на форуме
        P
        Pisych27 февраля 2023 г. 15:04
        Как получить в массив значения из связанной модели? Спасибо, разобрался:))
        AC
        Alexandru Codreanu19 января 2024 г. 22:57
        QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
        BlinCT
        BlinCT27 декабря 2023 г. 19:57
        Растягивать Image на парент по высоте Ну и само собою дял включения scrollbar надо чтобы был Flickable. Так что выходит как то так Flickable{ id: root anchors.fill: parent clip: true property url linkFile p…
        Дмитрий
        Дмитрий10 января 2024 г. 15:18
        Qt Creator загружает всю оперативную память Проблема решена. Удалось разобраться с помощью утилиты strace. Запустил ее: strace ./qtcreator Начал выводиться весь лог работы креатора. В один момент он начал считывать фай…
        Evgenii Legotckoi
        Evgenii Legotckoi12 декабря 2023 г. 17:48
        Побуквенное сравнение двух строк Добрый день. Там случайно не высылается этот сигнал textChanged ещё и при форматировани текста? Если решиать в лоб, то можно просто отключать сигнал/слотовое соединение внутри слота и …

        Следите за нами в социальных сетях