LINUX.ORG.RU

Немного об основах Qt (её метаобъектная система)

 


0

4

Это нормально что для использования сигнала предопределённого в самой Qt (5 версии), где передаются типы Qt, эти типы предварительно нужно регистрировать через Q_DECLARE_METATYPE и qRegisterMetaType()? Например, если хочу обработать сигнал QProcess::finished(int, QProcess::ExitStatus), то перед этим регистрирую QProcess::ExitStatus. Действительно ли так правильно в рамках правил Qt, или я что-то неправильно делаю? Интуитивно мне казалось что раз такой сигнал определён в самом фреймворке, то и типы должны быть известны самому же фреймворку, а иначе приходится тыкать везде регистрацию типов.

★★★

Всё правильно, многие перечисления не зарегистрированы. Почему — вопрос к разрабам

XMs ★★★★★
()
QProcess process;
connect(&process, static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),
        this, [](int exitCode, QProcess::ExitStatus exitStatus)
        {
            qDebug() << "QProcess::finished" << exitCode << exitStatus;
        });
htower_ ★★
()
Ответ на: комментарий от BceM_IIpuBeT

Узнал новое слово и теперь хвастаешь? В реальном мире в индустрии есть понятия сопровождаемость и поддерживаемость кода, дедушка. Но это дело программистов, забудь.

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

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

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

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

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

static_cast<void(QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished)

По мне, так ничем не лучше.

qOverload

А причём тут перегрузка функций?

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

Дружок, ты слишком много понтов задвигаешь, задавая при этом идиотские вопросы. Может лучше сначала почитаешь материалы по теме, прежде чем дурачком себя выставлять?

https://wiki.qt.io/New_Signal_Slot_Syntax

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

Но это дело программистов

А ты тут при чем?

SR_team ★★★★★
()

Пришел, задал вопрос, получил правильный ответ и выпендриваешься, позорник.

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

qOverload это хорошо, но:

1) Требует Qt 5.7 и выше, что не для всех проектов применимо. Это, в принципе обходится локальной копией в отдельном хидере, так многие делают.

2) «Красивый» вариант требует С++14, что тоже далеко не везде возможно.

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

Пришел, задал вопрос, получил правильный ответ и выпендриваешься, позорник.

Почему же сразу позорник, разве учить это позор? Как же я ещё помогу тебе когда ты попросил помочь справиться с твоим невежеством, ученик из тебя никудышный.

normann ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.