Название: Как передать параметр в слот? Отправлено: SibVenn от Сентябрь 30, 2018, 18:18 Добрый день. Возникла проблема, которую я никак не могу решить.
Так вот... Есть вот такая-вот штучка Код: QObject::connect(&FIELD[i][j], SIGNAL(clicked()),this,SLOT(changeIcons())); Код: void gameField::changeIcons() Пока в слоте changeIcons() нет параметров, все работает ну просто идеально. Но как только пытаюсь добавить туда параметр, все работать просто перестает. Например Код: QObject::connect(&FIELD[i][j], SIGNAL(clicked()),this,SLOT(changeIcons(FIELD[[i][j]]))); p.s. Понимаю, что спрашиваю, наверное, крайне банальные вещи, но сам я ничего не нашел. А что нашел, не смог повторить... ;) Название: Re: Как передать параметр в слот? Отправлено: Alex Custov от Сентябрь 30, 2018, 19:14 Ты хочешь в слоте узнать кто его вызвал? Используй метод sender()
Название: Re: Как передать параметр в слот? Отправлено: kambala от Октябрь 01, 2018, 01:09 QSignalMapper. да и на форуме этот вопрос задавался уже миллион раз.
Название: Re: Как передать параметр в слот? Отправлено: Igors от Октябрь 01, 2018, 02:53 Пока в слоте changeIcons() нет параметров, все работает ну просто идеально. Но как только пытаюсь добавить туда параметр, все работать просто перестает. Например А откуда "испускающий" (clicked) возьмет этот параметр? Сигнал может передать только то что имеет (в данном случае checked). Иначе, как уже ответили, в слоте можно получить только sender'а - и все.Код: QObject::connect(&FIELD[i][j], SIGNAL(clicked()),this,SLOT(changeIcons(FIELD[[i][j]]))); И лучше использовать новый синтаксис (адреса ф-ций), а если по-старинке то заглядывайте в консоль - там пишут почему connect не удался Название: Re: Как передать параметр в слот? Отправлено: zhbr от Октябрь 01, 2018, 09:42 QSignalMapper. да и на форуме этот вопрос задавался уже миллион раз. не рекомендуется для нового кода использовать QSignalMapper: This class is obsolete. It is provided to keep old source code working. We strongly advise against using it in new code.Название: Re: Как передать параметр в слот? Отправлено: kambala от Октябрь 01, 2018, 14:58 не видел такой информации, спасибо.
судя по SIGNAL и SLOT еще неизвестно использует ли ТС Qt 5. Название: Re: Как передать параметр в слот? Отправлено: sergek от Октябрь 01, 2018, 16:09 судя по SIGNAL и SLOT еще неизвестно использует ли ТС Qt 5. Судя по вопросу, TC вообще новичок в Qt. А начинать с 4.8, когда уже есть 5.11 может только большой оригинал)) Название: Re: Как передать параметр в слот? Отправлено: Авварон от Октябрь 02, 2018, 22:41 не видел такой информации, спасибо. ну теперь же лямбду оч просто повесить с нужным значением в контексте Название: Re: Как передать параметр в слот? Отправлено: ЙадоФитый ПлюсЧ от Октябрь 26, 2018, 17:48 Прошу прощения за оффтоп.
Судя по вопросу, TC вообще новичок в Qt. А начинать с 4.8, когда уже есть 5.11 может только большой оригинал)) Не согласен. Если вы вынуждены использовать CentOS 6.9 и унаследованные от нее дистрыбутивы, то Qt5 вам нужно или собирать самому Qt5, или искать левые репозитрии.Название: Re: Как передать параметр в слот? Отправлено: sergek от Октябрь 26, 2018, 19:49 Не согласен. Если вы вынуждены использовать CentOS 6.9 и унаследованные от нее дистрыбутивы, то Qt5 вам нужно или собирать самому Qt5, или искать левые репозитрии. Без иксов - да. А так - онлайн инсталлер и ставь, что хочешь.Название: Re: Как передать параметр в слот? Отправлено: zhbr от Октябрь 27, 2018, 11:22 Без иксов - да. А так - онлайн инсталлер и ставь, что хочешь. онлайн инсталлер можно юзать и без иксов. у себя делал так:Код: ./qt-unified-linux-x64-3.0.5-online.run --verbose --platform minimal --script qtni5101.qs в qtni5101.qs: Код: function Controller() { Название: Re: Как передать параметр в слот? Отправлено: sergek от Октябрь 27, 2018, 19:13 онлайн инсталлер можно юзать и без иксов. у себя делал так: Ух ты. Надо попробовать...Код: ./qt-unified-linux-x64-3.0.5-online.run --verbose --platform minimal --script qtni5101.qs Название: Re: Как передать параметр в слот? Отправлено: sergek от Декабрь 10, 2018, 16:40 Попробовал.. Обломался на старте:
Цитировать sergek@Toshiba:~$ ./qt-unified-linux-x64-online.run --verbose --platform minimal --script qtni5.qs Как заполнять этот qtaccount.ini, нигде не нашел. Кто-нибудь в курсе?IFW Version: 3.0.5, built with Qt 5.9.5. Build date: Jun 12 2018 Installer Framework SHA1: 59aa5f1
[3] License read from resource file: "enterprise" [3] Reading Qt Account settings from disk: "/home/sergek/.local/share/Qt/qtaccount.ini" [3] QtAccount information: [3] Login completed: false [3] Email: "sergek@..." [4] Total number of licenses: 0 [4] Account type: 3 [4] Resource tree: [4] :/translations .. Название: Re: Как передать параметр в слот? Отправлено: zhbr от Декабрь 11, 2018, 15:18 а этот qt account вам действительно нужен?
в моём случае я это скипаю Код: Controller.prototype.CredentialsPageCallback = function() { Название: Re: Как передать параметр в слот? Отправлено: sergek от Декабрь 11, 2018, 16:38 Так я ваш скрипт и взял в качестве примера))
Возможно, я чего не догоняю - инсталлятор выводит пару строк Цитировать [166] Loaded control script "qtni5.qs" и все застревает. В /tmp/ создается каталог и lock-файл и больше ничего не происходит.[166] Using control script: "qtni5.qs" Да, в общем, и фиг с ним. Потом разберусь. Название: Re: Как передать параметр в слот? Отправлено: zhbr от Декабрь 12, 2018, 07:40 может прав не хватает для установки в заданную директорию? я смотрю вы запускаете не от рута. можно запустить на линуксе с иксами, убрав параметр "--platform minimal", и пронаблюдать на каком этапе спотыкается инсталлер.
у меня такой механизм применяется для построения docker образов для CI/CD. вот https://hub.docker.com/r/alekseyyaroslavcev/linuxqt5101/builds/bq9j7zchm2bunwhgmkbqjr5/ (https://hub.docker.com/r/alekseyyaroslavcev/linuxqt5101/builds/bq9j7zchm2bunwhgmkbqjr5/) свежий лог сборки такого образа. там же есть ссылка на гитхаб-репозиторий со всеми исходниками. Название: Re: Как передать параметр в слот? Отправлено: sergek от Декабрь 12, 2018, 14:39 Когда инсталлятор запускается от пользователя, Qt устанавливается в домашний каталог.
Спасибо, попробую попозже. Название: Re: Как передать параметр в слот? Отправлено: zhbr от Декабрь 13, 2018, 07:48 в моем скрипте путь принудительно задаётся
Код: Controller.prototype.TargetDirectoryPageCallback = function() Название: Re: Как передать параметр в слот? Отправлено: sergek от Декабрь 13, 2018, 11:07 Кажется, дело было не в скрипте, а в доступе к qt.io - этот ресурс периодически бывает недоступен. Сейчас запустил, все поехало. Спасибо.
|