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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Нижний регистр в имени инклюда плагина дизайнера  (Прочитано 4279 раз)
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« : Октябрь 17, 2016, 21:23 »

Есть два моих разных плагина, которые в дизайнере перетаскиваются на окно приложения. У обоих плагинов в названии есть символы в верхнем регистре. При сборке приложения получаю ошибку "не найден инклюд <widgetname.h>" хотя должно быть WidgetName.h. Смотрю в исходник mainwindow.ui, который создаёт дизайнер, и там вижу
Код:
<customwidget>
  <class>WidgetName</class>
  <extends>QWidget</extends>
  <header>widgetname.h</header>
</customwidget>
но у другого плагина
Код:
<customwidget>
  <class>OtherWidget</class>
  <extends>QWidget</extends>
  <header>OtherWidget.h</header>
</customwidget>
как и должно быть у обоих. При этом widgetname нигде у меня в исходниках не встречается. Чего это за хрень? Кто-нибудь такое видел?
Записан

2^7-1 == 127, задумайтесь...
carrygun
Гость
« Ответ #1 : Октябрь 18, 2016, 08:18 »

Скорее всего IDE так делает. Например, при создании классов в креаторе они создадутся на диске в нижнем регистре. Думаю для кроссплатформенности это дело сделано, так как в линуксах "widgetname.h" и "OtherWidget.h" - два разных файла.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #2 : Октябрь 18, 2016, 10:54 »

Кроссплатформенность???... Эта фича ОТРИЦАТЕЛЬНО влияет на кроссплатформенность. В Windows компилятор слопал бы #include "widgetname.h" при том, что сам файл назывался бы WidgetName.h. А потом при переносе в Linux вылетела бы ошибка. Но я делаю в Linux и наткнулся сразу. НЕ ДОЛЖНО БЫТЬ такой фичи. Имена инклюдам даю я, и среда не имеет права их переделывать. Кстати, в самом Qt сплошь и рядом инклюды имеют символы верхнего регистра в именах инклюдов, и это вполне кроссплатформенно.

ИМХО - это баг дизайнера.
Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #3 : Октябрь 18, 2016, 11:16 »

Код:
QString CButtonPlugin::includeFile() const
{
    return QLatin1String("cbutton.h");
}

Насколько я помню вооон оттуда берутся все инклуды. Так что где то у вас там закавыка.
PS дизайнер тупой, он сам ничего не добавляет. Всем рулит плагин.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #4 : Октябрь 18, 2016, 14:29 »

Код:
QString CButtonPlugin::includeFile() const
{
    return QLatin1String("cbutton.h");
}

Насколько я помню вооон оттуда берутся все инклуды. Так что где то у вас там закавыка.
PS дизайнер тупой, он сам ничего не добавляет. Всем рулит плагин.


Там всё тупо, никаких преобразований, в обоих случаях одинаково:

QString WidgetName::includeFile() const
{
    return "WidgetName.h";
}

и

QString OtherName::includeFile() const
{
    return "OtherName.h";
}

имена разумеется в реальности другие, но принцип этот же.
Записан

2^7-1 == 127, задумайтесь...
Bepec
Гость
« Ответ #5 : Октябрь 19, 2016, 18:23 »

Дизайнер ничего в общем то не меняет. Он просто подставляет в шаблон эти получаемые строки. Так что ошибка где то у вас.
Записан
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #6 : Октябрь 19, 2016, 18:28 »

Дизайнер ничего в общем то не меняет. Он просто подставляет в шаблон эти получаемые строки. Так что ошибка где то у вас.

В исходниках нет. Потому что исходники плагина (включая проект), у которого имя инклюда коверкается, получены из исходников плагина, в котором всё в порядке, путем копирования и простой замены имён. Всё. Если где-то в настройках... то облазил всё, не нашел. Пришлось просто переименовать инклюд в нижний регистр, и соответственно изменить все отсылки на него в исходниках и проекте.

Подозреваю, что всё-таки глюк дизайнера, лишний lowercase где-то.
Записан

2^7-1 == 127, задумайтесь...
Гурман
Гуру общения
******
Offline Offline

Сообщений: 1442

Qt 2.2, 3.3, 4.5, 4,7, 4.8, 5.3, 5.6, 5.9, 5.12


Просмотр профиля
« Ответ #7 : Ноябрь 03, 2016, 01:46 »

Лазил по настройкам - и где-то вывалилось окно, в котором задавалось имя того саиого инклюда, и оно было написано в нижнем регистре. Решил уже не переделывать.
Записан

2^7-1 == 127, задумайтесь...
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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