Ответы пользователя по тегу Qt
  • Тестированое "ошибками", или как эмулировать их при дебаге и отладке?

    bogolt
    @bogolt
    Пишите логи всех действий совершаемых программой. Например
    2018-11-01 15:12:12.123 Menu 'Open file' activated
    2018-11-01 15:12:12.223 Opening file '/home/user/abc.txt'
    2018-11-01 15:12:12.223 Operation failed with system error: Permission denied


    Достаточно подробный, снабженными нужными значениями переменных лог ( пароли от баз данных и другие опасные вещи лучше заменять в логе на звездочки ) можно позже спокойно проанализировать, и воспроизвести ( а затем и починить баг ). Логи можно попросить выслать с машины на которой случился баг, если он например не воспроизводится на вашем железе.

    Учтите только что логи не должны бесконечно расти, и что при каждом старте программы нужно дописывать в существующий лог не обнуляя старый файл.
    Ответ написан
    Комментировать
  • Почему если вызывать QWidget::show() через точку, то не показывает?

    bogolt
    @bogolt
    Вам уже ответили правильно, хочу добавить что в Qt все окна и контролы нужно создавать в куче ( так как тогда сама Qt сможет корректно их удалить ). Кроме того при создании нового объекта не забывайте указать ему на его родителя ( в вашем случае при создании QWidget внутри класса Widget -
    QWidget* w = new QWidget(this);
    QLineEdit *line = new QLineEdit(w);
    Ответ написан
    1 комментарий
  • Что делать с ошибкой undefined reference to при передаче параметра в функцию?

    bogolt
    @bogolt
    Вы объявили separateImage членом класса, а определили ее как глобальную функцию ( не указали имя_класса:: перед определением. Поэтому и возникает undefined reference.
    Ответ написан
    Комментировать
  • Почему не срабатывает сигнал в режиме Release?

    bogolt
    @bogolt
    >Коннект вроде проходит нормально (стоит assert)
    Подозреваю что вы написали нечто в таком духе
    assert(connect(signal(), slot());
    и в этом ваша ошибка.
    Дело в том что в релизной сборки все ассерты из кода выкидываются. Есть дефайн, гласящий что в дебаге ассерты выводят сообщение об ошибке, а в релизе меняются на void. А так как выкинулся ассерт то выкинулась и ваша функция.
    Так что проверяйте результат функций не в ассертах, ну или вначале получите значение функции а потом пихайте его в ассерт.
    Ответ написан
    4 комментария
  • Кроссплатформенная игра на Qt, реально ли?

    bogolt
    @bogolt
    Теоретически на Qt реально. На практике может лучше cocos2d-x взять ? Тоже плюсы, ну и все заявленные вами платформы тянет.
    Ответ написан
    Комментировать
  • Что использовать при разработке графического редактора на С++/Qt?

    bogolt
    @bogolt
    По-моему Qt хороший выбор для подобной программы. И не думаю, что вам имеет смысл отказываться от QGraphicsScene только потому что иначе задача вам кажется слишком простой. Я скорее предположу, что на каком-то этапе работы возможностей QGraphicsScene может не хватить для поставленных задач ( я однажды столкнулся с подобной проблемой, у ее дедушки в Qt3 ), и вот тогда действительно придется весь код писать ручками. Но изобретать себе работу, отказываясь от уже существующих классов - имхо неправильно.
    Поймите меня правильно - научится создавать подобные классы самому - полезное умение. Но если вы вначале научитесь использовать существующие, то затем, когда решитесь создать нечто свое уже будете обладать опытом использования этих классов, а так же примерным пониманием того что в них хорошо, а что не очень.
    На мой взгляд выбранная вами задача не настолько простая как может показаться, хотя это конечно сильно зависит от количества фич которые вы хотите реализовать. Но тем не менее я бы предположил вам вначале создать работающую программу, реализовав таким образом свою цель, а уже потом если сохранится желание переписывать внутренности на собственные графические контейнеры.
    Ответ написан
    Комментировать
  • Как написать игровой сервер на Qt?

    bogolt
    @bogolt
    Qt не предназначен для серверов. Это отличная библиотека для десктопных приложений.

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

    Позволю себе полюбопытствовать насчет сетевого протокола. Будет ли это голый TCP или нечто более продвинутое. Если вы еще не определились или уже выбрали TCP могу порекомендовать посмотреть на xmpp. Он просто прекрасен. Правда на си есть не так уж много библиотек реализующих его, впрочем libstrophe должно хватить.
    Ответ написан
    1 комментарий