Russian Qt Forum
Ноябрь 24, 2024, 08:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Как разместить код Qt-класса в main.cpp?  (Прочитано 15857 раз)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #15 : Февраль 27, 2013, 11:04 »

Про публичность вроде как разговор не стоял вообще.
На линуксе для таких случаев мне достаточно любого редактора и командной строки:
Код
Bash
moc -o moc_test1.cpp test1.cpp && g++ -O0 -g3 -o test1 test1.cpp `pkg-config --cflags QtGui` `pkg-config --libs QtGui` && ./test1
Записан

Qt 5.11/4.8.7 (X11/Win)
twp
Гость
« Ответ #16 : Февраль 27, 2013, 12:52 »

VS создаёт моки и прочее в процессе компиляции кода. Причём местонахождение папки для генерируемых файлов меняется в настройках проекта. Т.е. мне например удобно, что они сразу улетают в темп и не мучают меня своим присутствием в папке с исходниками.

А в чем проблема? Сгенерированные исходники VS отображает в Generated Files, ресурсы - в Resource Files, а сами исходники в Source Files. Большого неудобства я в этом не вижу. Или я что-то недопонимаю?

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

Проще выражаясь - создаётся фиг пойми где, а даже если и пойми где, нужен абсолютный путь.
Хм, не один год пользуюсь VS и никогда не приходилось прописывать абсолютные пути или что-то подобное. Можно по-подробнее об этой проблеме?

И ничего плохого не вижу, использовать такой подход для небольшого приложения, или одного класса, который используется только в main.cpp.
Вот список демок и примеров, что поставляются вместе c Qt:

demos\embedded\flickable\main.cpp
demos\glhypnotizer\main.cpp
examples\activeqt\comapp\main.cpp
examples\activeqt\simple\main.cpp
examples\activeqt\webbrowser\main.cpp
examples\animation\animatedtiles\main.cpp
examples\animation\appchooser\main.cpp
examples\animation\moveblocks\main.cpp
examples\animation\states\main.cpp
examples\tutorials\gettingStarted\gsQt\part3\main.cpp
examples\tutorials\gettingStarted\gsQt\part4\main.cpp
examples\tutorials\gettingStarted\gsQt\part5\main.cpp
examples\widgets\validators\main.cpp
examples\graphicsview\weatheranchorlayout\main.cpp
examples\network\bearercloud\main.cpp
examples\network\download\main.cpp
examples\statemachine\factorial\main.cpp
examples\statemachine\trafficlight\main.cpp

Неужели разоработчики Qt не в курсе, что это сплошная "головная боль"?
Записан
Bepec
Гость
« Ответ #17 : Февраль 27, 2013, 13:20 »

Я имею в виду, что у меня генерейтед файлы в 50% проектов улетают в e:\temp\. В оставшихся файлы улетают в %папкаПроекта%/tresh/.

Если я туды подключу #include <moc_main.cpp> у меня ничего не соберётся Веселый Если я напишу #include <e:\temp\moc_main.cpp> то будет работать в 50% случаев.

И :

1) не спорю, удобно это тем, кто использует Qt Creator.
2) не спорю, тролли, использующие Qt Creator для создания примеров, тоже понимают что им удобно.
3) не спорю, если я когда нибудь начну использовать Qt Creator, это будет удобно Веселый

НО:
1) это неудобно мне в VS, ибо настройки IDE могут меняться в зависимости от проектов Веселый
2) это неудобно в VS, когда используются пропертишиты (комплекс настроек для проектов, устанавливающий единообразные настройки для IDE у всех разработчиков)
3) да и тупо неудобно, потому что папка generated files, в которую по умолчанию кладутся файлы по умолчанию не входит в пути для include.
Записан
twp
Гость
« Ответ #18 : Февраль 27, 2013, 13:55 »

Я имею в виду, что у меня генерейтед файлы в 50% проектов улетают в e:\temp\. В оставшихся файлы улетают в %папкаПроекта%/tresh/.

Если я туды подключу #include <moc_main.cpp> у меня ничего не соберётся Веселый Если я напишу #include <e:\temp\moc_main.cpp> то будет работать в 50% случаев.

Пахнет какой-то ерундой. Неужели чтоб собрать любой из примеров в VS, нужно где-то прописывать абсолютный путь?
Да и qmake переменные     
    MOC_DIR
    OBJECTS_DIR
    UI_DIR
    RCC_DIR
указывают на e:\temp\? Тогда опять же, ничего явно прописывать не нужно.

И тогда такой вопрос, как происходит открытие Qt-проекта в VS?
Записан
Bepec
Гость
« Ответ #19 : Февраль 27, 2013, 14:45 »

Хм. Собрал примеры. Был неправ.

Не компилится когда пытаешься приписать #include <moc_class.h>. При прописи же #include <main.moc> всё стабильно и нормально.

А открытия Qt проекта не происходит. Происходит генерация sln файла из pro. Подключаемые модули и прочая устанавливаются в конфигурацию проекта.

« Последнее редактирование: Февраль 27, 2013, 17:48 от Bepec » Записан
schmidt
Гость
« Ответ #20 : Февраль 27, 2013, 17:14 »

Привычка же - вторая натура Улыбающийся Как привыкнешь с самого начала - так и будешь делать на автомате.

Цитировать
А может у него НИКОГДА в этом проекте не будет десятка классов?

Тоже весьма категоричное утверждение, смею заметить  Строит глазки  Улыбающийся
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #21 : Март 01, 2013, 09:23 »

Цитировать
А может у него НИКОГДА в этом проекте не будет десятка классов?
Тоже весьма категоричное утверждение, смею заметить  Строит глазки  Улыбающийся
Сочетание слов "может" и в "этом проекте" не подразумевает категоричного толкования.
Записан
schmidt
Гость
« Ответ #22 : Март 01, 2013, 10:35 »

Я бы не стал заранее "хоронить" свои маленькие тестовые проекты-заготовки подобными деяниями - а вдруг автору КОГДА-НИБУДЬ понадобится функциональность этого проекта и он пожелает просто встроить его в другой проект? В том и соль - не собирать 200 велосипедов на протяжении всей жизни, а иметь собственную подборку небольших рабочих проектов для повторного использования. Не вижу ни одной очевидной причины, почему "тестовый" код собственных примеров нужно обязательно выполнять в стиле *овнокода Веселый. Хорошие привычки стоит набирать с самого начала пути Улыбающийся
Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #23 : Март 01, 2013, 12:18 »

Я бы не стал заранее "хоронить" свои маленькие тестовые проекты-заготовки подобными деяниями - а вдруг автору КОГДА-НИБУДЬ понадобится функциональность этого проекта и он пожелает просто встроить его в другой проект?
А я предпочитаю решать проблемы по мере их поступления и «не множить сущее без необходимости», но допускаю, при этом, наличие других подходов к разработке (например, подобного Вашему) поэтому и рекомендую не комментировать чужие вопросы в стиле
Смеющийся Смеющийся 5 баллов!
Записан
schmidt
Гость
« Ответ #24 : Март 01, 2013, 14:11 »

«не множить сущее без необходимости»

Насколько всем известно, Creator автоматом создаёт по отдельному файлу на каждый класс Подмигивающий Силком пихать их в один файл - не это ли излишние усилия? Улыбающийся
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #25 : Март 01, 2013, 19:48 »

Силком пихать их в один файл - не это ли излишние усилия? Улыбающийся
А мы пишем на C++ или Qt++?  В замешательстве
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
schmidt
Гость
« Ответ #26 : Март 08, 2013, 18:20 »

А что за язык такой, Qt++ ?  Подмигивающий QML?
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #27 : Март 09, 2013, 13:47 »

А что за язык такой, Qt++ ?  Подмигивающий
Это "язык", в котором "Силком пихать их в один файл" требует "излишние усилия"  Подмигивающий
C++ это позволяет.
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #28 : Март 27, 2013, 17:17 »

Так как правильно прописывать?
#include "main.moc" - no such file,
moc.exe -o moc_main.cpp main.cpp - Note: No relevant classes found. No output generated
(5.0.1 mingw, настройки по умолчанию)

Либо ты что-то сделал неправильно, например, не указал Q_OBJECT, либо тебе и не нужен moc и соответствующий #include добавлять не нужно.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #29 : Март 27, 2013, 22:05 »

зачем? Если необходимости в нём нет, то и создавать не нужно, и писать #include "main.moc" тоже
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.082 секунд. Запросов: 23.