LINUX.ORG.RU

Не могу понять, что там с deprecated QFlags в Qt 5.15?

 , , ,


0

1

Пытался собрать старенький проект на Qt 5.15.

Он даже собирается и работает. Но при компиляции куча варнингов про всякие deprecated. Один из варнингов следующий.

Сам код:

class RecordInfoFieldsEditor : public QDialog
{
  RecordInfoFieldsEditor( QWidget * parent = nullptr, Qt::WindowFlags f = 0 ); 


Варнинг такой:
In file included from src/views/record/RecordInfoFieldsEditor.cpp:11:
src/views/record/RecordInfoFieldsEditor.h:22:75: warning: ‘constexpr QFlags<T>::QFlags(QFlags<T>::Zero) [with Enum = Qt::WindowType; QFlags<T>::Zero = int QFlags<Qt::WindowType>::Private::*]’ is deprecated: Use default constructor instead [-Wdeprecated-declarations]
   22 |   RecordInfoFieldsEditor( QWidget * parent = nullptr, Qt::WindowFlags f = 0 );
      |                                                                           ^  

В документации на конструктор QDialog ничего внятного про прекращение поддержки флагов не написано:

QDialog::QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Constructs a dialog with parent parent.

A dialog is always a top-level widget, but if it has a parent, its default location is centered on top of the parent. It will also share the parent's taskbar entry.

The widget flags f are passed on to the QWidget constructor. If, for example, you don't want a What's This button in the title bar of the dialog, pass Qt::WindowTitleHint | Qt::WindowSystemMenuHint in f.

See also QWidget::setWindowFlags().



Да и для QWidget, от которого наследуется QDialog, тоже глухо:

QWidget::QWidget(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags())

Constructs a widget which is a child of parent, with widget flags set to f.

If parent is nullptr, the new widget becomes a window. If parent is another widget, this widget becomes a child window inside parent. The new widget is deleted when its parent is deleted.
The widget flags argument, f, is normally 0, but it can be set to customize the frame of a window (i.e. parent must be nullptr). To customize the frame, use a value composed from the bitwise OR of any of the window flags.

If you add a child widget to an already visible widget you must explicitly show the child to make it visible.

Note that the X11 version of Qt may not be able to deliver all combinations of style flags on all systems. This is because on X11, Qt can only ask the window manager, and the window manager can override the application's settings. On Windows, Qt can set whatever flags you want



Как исправить код, чтобы этого варнинга не было? Чего хочет Qt или компилятор? Что там с QFlags, их дальше в Qt не будет?

Достаточно ли просто убрать из прототипа и реализации параметр Qt::WindowFlags f и его установку по-умолчанию?

★★★★★

Ответ на: комментарий от Xintrea

на том языке, на котором думаешь

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

anonymous
()
Ответ на: комментарий от i-rinat

Даже интересно, на каком из слов «constructor», «default», «deprecated», «instead», «is», «use», «warning» возникает когнитивная перегрузка?

В их совокупности и каждом слове по отдельности. За словом «constructor» в C++ стоит бешенная прорва информации. За словом «default» - тоже много смыла, если мы говорим про языки программирования, но помимо этого нужно знать, что в совокупности слов «default constructor» кроется другое вполне определенное понятие, за которым скрывается еще одна бездна инфы. И если про понятие «конструктор» еще можно что-то помнить, про понятие «default constructor» - надо лезть в справочники и читать пару глав, а когда сюда приплетается инициализация - двумя главами уже не обойдешься.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от anonymous

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

Ну почитай про разведчиков, как их трясет, когда они осознают, что начинают думать на другом языке. Их даже специально учат правильно на это реагировать. И заметь, я нигде не говорил, что человек не мыслит образами.

Когда ты сказал что «человек не думает на языке» - ты показал свою полную некомпетентность.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от zx_gamer

Берешь проект из 2000-х и он просто собирается.

Без единого варнинга?

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Это ответ про некого абстрактного человека или ответ про свой опыт? Просто если второе, то мне сложно представить, что за столько лет можно было не понять, что такое constructor и что означает default.

i-rinat ★★★★★
()
Ответ на: комментарий от hobbit

несколько бестолковые вопросы ему можно простить

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

Чем дальше, тем больше дичи. ТС приводит цитату из книг, которой оправдывает нежелание хоть как-то взаимодействовать с предупреждениями компилятора. Мол, у него когнитивная перегрузка. Это как вообще? Это что-то типа инвалидности, но не физической, а когнитивной?

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

i-rinat ★★★★★
()
Ответ на: комментарий от Xintrea

Это основа основ языка. Как можно программировать не зная таких простых вещей — загадка. Полистай хотя бы брошюрку Croco. Это не займет много времени, но станет понятно хотя бы что ты делаешь.

zx_gamer ★★★
()
Ответ на: комментарий от i-rinat

Это ответ про некого абстрактного человека или ответ про свой опыт? Просто если второе, то мне сложно представить, что за столько лет можно было не понять, что такое constructor и что означает default.

Есть люди, которые научились водить машину, и говорят: я знаю что такое автомобиль и как он работает. А есть люди, которые при тех же условиях знают, что они совершенно не представляют себе даже части процессов, происходящих во всей совокупности двигателя внутреннего сгорания и всей его обвязки, включая химию катализатора. И они говорят: я не знаю как устроен автомобиль.

Поэтому я не знаю, что такое конструктор и что обозначает default. Ровно потому, что не представляю как они работают. И общие фразы про выделение памяти под объект и наполнение объекта некоторыми значениями - мне ни о чем не говорят. Я не знаю как это делается. А чтобы я знал - я должен стать, как минимум, разработчиком компиляторов, написать свой компилятор, и потом уже с этим багажом иметь возможность сравнивать как работают другие. Но мне это не светит, так как есть куча других задач, а емкость моего мозга ограничена.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Может быть, стоит по аналогии с программами вроде доступных сред для инвалидов выделить раздел форума для людей с когнитивной недостаточностью, чтобы они могли там не опасаться казаться «глупыми»?

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

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Я эти ваши плюсы расчехляю один раз в пару лет. Они мне неинтересны и порогаю на них только из-за необходимости.

А, ну тогда я понял, почему люди в теме возмущаются. Логично, что если б я начал задавать вопросы про Rust, я бы воздержался от оборотов вроде «этот ваш хруст мне неинтересен».

Более того, я сам как-то сагрился на человека, который в высокомерном тоне спрашивал, как в Qt делается то, что в Дельфи делается элементарно, и попросил его быть повежливей. В ответ получил от него кучу грязи. Там, правда, ситуация несколько отличалась: 1) он начал быковать прямо в ОП; 2) про СПО речь не шла, ему надо было переводить проприетарный проект, да ещё и не по своей воле, а потому, что заказчик потребовал переход на линукс, что делало его высокомерный тон особенно омерзительным; 3) я тогда ещё не был модератором, соответственно, сдерживался чуток поменьше.

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

А вопросы по языку программирования всё-таки стоит задавать с уважением к носителям знаний.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

А вопросы по языку программирования всё-таки стоит задавать с уважением к носителям знаний.

Хоть одно мое сообщение найди, где я говорю без уважения к собеседнику. Конечно, если до этого собеседник не переходил до личностных оценок умственных способностей оппонента.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Есть люди, которые <…>
А есть люди, которые <…>

Это софизм, а конкретнее искусственное усиление с целью довести до абсурда. Звучит красиво, но по сути бессмысленно.

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

емкость моего мозга ограничена

Зачем тогда тратить её на программирование? В нём постоянно приходится решать проблемы, причём иногда такие, с которыми никто не сталкивался.

i-rinat ★★★★★
()
Ответ на: комментарий от Xintrea

Ровно потому, что не представляю как они работают … Я не знаю как это делается … мне это не светит

Если бы я знал, что такое электричество,
Я сделал бы шаг, вышел бы на улицу,
Зашел бы в телефон, набрал бы твой номер
И услышал бы твой голос, голос, голос…

Но я не знаю, как идет сигнал,
Я не знаю принципа связи,
Я не знаю, кто клал кабель,
Едва ли я когда-нибудь услышу тебя, тебя, тебя…

anonymous
()
Ответ на: комментарий от Xintrea

Ровно потому, что не представляю как они работают.

Ну не представляешь - ничего страшного, это норма, редко кто представляет свои используемые инструменты на 100%, но бравировать из сообщения в сообщение этим явно сильно лишнее.

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

но бравировать из сообщения в сообщение этим явно сильно лишнее.

Слушайте, ребята, вы тут совсем кукухой поехали, и не видите причинно - следственных связей. Вы находитесь на техническом форуме, в ветке, в которой задан сугубо технический вопрос.

Среди вас находятся долбонавты, которые в этой теме считают уместным писать сообщения с обсуждением особенности психики и когнитивного восприятия вопрошающего. Потом вы разводите срач, потом модератор запрыгивает: «внатуре, чо ты злишь великих носителей знаний, как ты посмел сказать „в этих ваших“?

Вам не кажется это странным?

Почему вы считаете, что я бравирую? Вы умеете через астрал из сухого текста извлекать интонацию? Вот я, например, пишу это с грустью. А у вас - бравирую.

Скажите спасибо, что я вам вообще отвечаю.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

@hobbit, пролоббируешь создание нового раздела?

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

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

Вы находитесь на техническом форуме,

шизофрения вахтенная, этот форум для хостинга талкс где клубятся больные

в ветке, в которой задан сугубо технический вопрос.

вопрос задан и по нему видно, что тебе не надо вопрос задавать, а надо идти учить плюсы, а так ты создаешь на форуме мусорные темы, информационный шум, который ни как не делает лорчик лучше, продолжает его дрейф в тьму талксов

стоит пролоббировать возможность автора топика быть модератором своего топика.

у тебя тут своего ничего нет, как только ты намусорил топик это немедленно общественное достояние и общество местное негодует

anonymous
()
Ответ на: комментарий от anonymous

А еще хорошо бы, чтоб в создаваемой теме можно было ставить или выключать галочку «Разрешить писать анонимусам». Чтобы автор темы не был зависим от глобальных решений модераторов пускать анонимусов на ЛОР или нет.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Xintrea

пролоббировать возможность автора топика быть модератором своего топика

Я совсем недавно объяснял, почему я считаю это крайне нехорошей идеей, и судя по обсуждению, не только я.

Вот и сейчас: ты квалифицировал как «говновысеры» высказывания не самого глупого человека в этой теме, который по крайней мере, постарался свою точку зрения аргументировать.

Такая «саморегуляция» приведёт к тому, что твои темы превратятся в блог, потом ты удивишься, что этот блог не хотят комментировать, а потом и совсем свалишь. Форум всё-таки место для обмена опытом.

P.S. «внатуре» и «посмел» ну совсем не моя лексика, если что. Не надо мне такого приписывать, даже утрируя.

P.P.S. Почему-то в темах, которые я создавал с вопросами по разработке DoubleContact (можешь посмотреть по тегу) абсолютное большинство комментаторов вело себя адекватно и немалая их часть мне просто помогла. Да, была пара неадекватов и пара петросянов уровня «не на GTK, значит, не нужно», этих я спокойно проигнорировал, и пара критиков, с которыми мы просто не сошлись во мнениях (тоже ничего страшного). Желания отгораживаться от критиков у меня не возникло, по крайней мере.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 3)
Ответ на: комментарий от Xintrea

А еще хорошо бы, чтоб в создаваемой теме можно было ставить или выключать галочку «Разрешить писать анонимусам».

Ты не поверишь… (посмотри внимательно на чекбокс под метками).

hobbit ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.