Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ilya_181 от Август 09, 2017, 14:41



Название: Файлы .cpp
Отправлено: Ilya_181 от Август 09, 2017, 14:41
Подскажите где находятся файлы реализации(.cpp) библиотеки Qt?
В заголовочный файл я могу попасть через F2 в QtCreator-е. Хочу посмотреть (.сpp) файлы различных виджетов и классов (QWidget, QComboBox, QTextCursor...). Клавиша F4 "переключить заголовочный/исходный " не переключает.  Так же как и shift F2 "переключить объявление/реализацию функции функции" не работает. Через F2 попадаю только в (.h) файлы.
Пытался найти файлы в папке где установлен Qt, не нашел.


Название: Re: Файлы .cpp
Отправлено: __Heaven__ от Август 09, 2017, 14:45
Можно отдельно скачать архив с исходниками Qt для получения cpp. У вас же, скорее всего результат сборки Qt, т.е. библиотечные файлы и заголовочные.


Название: Re: Файлы .cpp
Отправлено: Swa от Август 09, 2017, 14:54
https://github.com/qt/qtbase (https://github.com/qt/qtbase)


Название: Re: Файлы .cpp
Отправлено: ViTech от Август 09, 2017, 14:55
Пытался найти файлы в папке где установлен Qt, не нашел.

А как устанавливали Qt? Если с помощью "Qt Online Installers" ("Qt Maintenance Tool"), то там для заданной версии Qt нужно отметить компонент "Sources".


Название: Re: Файлы .cpp
Отправлено: Ilya_181 от Август 09, 2017, 14:56
Можно отдельно скачать архив с исходниками Qt для получения cpp. У вас же, скорее всего результат сборки Qt, т.е. библиотечные файлы и заголовочные.
То есть что значит "библиотечные файлы"? У меня все работает, все проекты компилируются, и в тоже время отсутствуют исходники. Как же тогда работают классы без исходников?


Название: Re: Файлы .cpp
Отправлено: Ilya_181 от Август 09, 2017, 14:59
Пытался найти файлы в папке где установлен Qt, не нашел.

А как устанавливали Qt? Если с помощью "Qt Online Installers" ("Qt Maintenance Tool"), то там для заданной версии Qt нужно отметить компонент "Sources".
Я уже не помню, но скорее всего через "Qt Online Installers". По видимому я не отметил компонент "Sources".


Название: Re: Файлы .cpp
Отправлено: ViTech от Август 09, 2017, 15:01
Я уже не помню, но скорее всего через "Qt Online Installers". По видимому я не отметил компонент "Sources".

Тогда запустите "Qt Maintenance Tool" и там можно добавлять/удалять компоненты.


Название: Re: Файлы .cpp
Отправлено: Ilya_181 от Август 09, 2017, 15:08
Цитировать
Тогда запустите "Qt Maintenance Tool" и там можно добавлять/удалять компоненты.
Я так понял снова скачать "Qt Maintenance Tool" и добавить/удалить компоненты


Название: Re: Файлы .cpp
Отправлено: ViTech от Август 09, 2017, 15:17
Я так понял снова скачать "Qt Maintenance Tool" и добавить/удалить компоненты

Если Qt устанавливался с помощью "Qt Online Installer", то при этом устанавливается "Qt Maintenance Tool" (в меню "Пуск" винды), с помощью которого можно изменять состав компонентов Qt.


Название: Re: Файлы .cpp
Отправлено: __Heaven__ от Август 09, 2017, 15:20
То есть что значит "библиотечные файлы"? У меня все работает, все проекты компилируются, и в тоже время отсутствуют исходники. Как же тогда работают классы без исходников?
В папке lib хранятся a файлы с описанием модулей Qt. Для mingw это a файлы, которые являются архивными. Они полезны на этапе линковки программы.
В папке bin хранятся динамические библиотеки (dll). Они содержат скомпилированный исполнительный код модулей Qt. При запуске вашей программы загружается и dll. При обращение к методам классов Qt, которые были скомпилированы не в качестве встроенных, ваша программа обращается именно к dll.


Название: Re: Файлы .cpp
Отправлено: Ilya_181 от Август 10, 2017, 11:22
https://github.com/qt/qtbase (https://github.com/qt/qtbase)
Скачал исходники только по этой ссылке http://download.qt.io/archive/qt/5.6/5.6.2/single/ (http://download.qt.io/archive/qt/5.6/5.6.2/single/). Теперь, можно как-то сделать чтобы они открывались в QtCreator через F2? Куда нужно скинуть файлы, и что прописать в QtCreator, может кто знает?


Название: Re: Файлы .cpp
Отправлено: __Heaven__ от Август 10, 2017, 11:36
Кажется, без костылей тут не обойтись.
Можно, конечно, прописать в tools->options->c++->file naming-> sources->search paths все пути к исходникам и по F4 переключаться.
Но зачем это всё нужно?


Название: Re: Файлы .cpp
Отправлено: Ilya_181 от Август 10, 2017, 15:13
Кажется, без костылей тут не обойтись.
Можно, конечно, прописать в tools->options->c++->file naming-> sources->search paths все пути к исходникам и по F4 переключаться.
Но зачем это всё нужно?
Если прописать путь как вы посоветовали, то работает. Но проблема в том что нужно прописывать абсолютный путь (D:\Qt5.6.2\src\widgets\widgets). Это плохо потому что прописать все пути я быстрее с ума сойду, там столько каталогов... Есть вариант какой-то чтобы я написал только (D:\Qt5.6.2\src)  путь к папке исходников (src), а QtCreator  пусть ищет по каталогам?

В крайнем случае я все повытаскиваю с каталогов и скопирую все (.cpp) в одну папку. После можно будет подключить эту папку и будет все работать. Вручную конечно долго будет, напишу может батник, но батники не умею, напишу прогу на Qt. Но перед этим, может кто знает более простой вариант?


Название: Re: Файлы .cpp
Отправлено: Bepec от Август 10, 2017, 15:17
Вам нужно только добавить директорию include.
Всё остальное любая IDE додумает сама.


Название: Re: Файлы .cpp
Отправлено: ViTech от Август 10, 2017, 15:33
Есть вариант какой-то чтобы я написал только (D:\Qt5.6.2\src)  путь к папке исходников (src), а QtCreator  пусть ищет по каталогам?

В Tools->Options->Debugger->General->Source Path Mapping->"Add Qt sources" можно указать папку, где лежат исходники. Но это нужно, чтобы во время отладки можно было заходить во внутренности Qt, в режиме редактирования это не очень помогает. Ну и с однозначным соответствием *.h <-> *.cpp в Qt не всё так просто, для одного заголовочного файла могут быть несколько cpp для разных платформ и т.п (Qt\x.x.x\Src\qtbase\src\corelib\thread\qmutex*.* например).


Название: Re: Файлы .cpp
Отправлено: lit-uriy от Август 11, 2017, 08:52
>"Всё остальное любая IDE додумает сама. "
Верес, не может она для Си/Си++ додумать. В части того где лежат CPP-файлы, т.к. лежать они могут где угодно.