Qt - Создание пользовательских виджетов с нуля

Поделиться
HTML-код
  • Опубликовано: 7 ноя 2024

Комментарии • 12

  • @marydudnik9689
    @marydudnik9689 7 лет назад +3

    Спасибо за урок, подскажите пожалуйста, откуда у ui появляется verticalLayout, если его перед этим не добавить на сам Widget? Если же добавить verticalLayout, то сама форма меняет размеры, а картинка статична (отступы меняются).

    • @dmitrybgm
      @dmitrybgm 5 лет назад

      Присоединяюсь к вопросу. За два года ответа нет.

    • @РоманАндреевич-с2ж
      @РоманАндреевич-с2ж 4 года назад

      @@dmitrybgm при создании ui необходимо нажать на поле(не на слайдер) и выбрать "скопановать по вертикали"

  • @samou4ka2
    @samou4ka2 9 лет назад

    Спасибо!) Как раз кстати))

  • @АнтонК-м8о
    @АнтонК-м8о 6 лет назад +6

    Зачем пользовательский класс называть "Q...."? Маскировка под встроенный класс?

  • @YoKy59
    @YoKy59 9 лет назад +5

    Как всегда, хороший видеоурок. Надеюсь, не против конструктивной критики? Тогда поехали!
    Примерно в 8:40 Вы предлагаете "приконнектить" marginChanged и repaint. Это не круто, ведь коннект - далеко не самая простая реализация такого простого действия (пусть на примере такой лёгкой программы это не заметно, но вообще-то коннекты тяжелые и снижают производительность программы, лучше использовать их только там, где это необходимо). Можно ведь в конец метода setMargin добавить строчку repaint(); и всё будет ОК. То же самое для setPixmap.
    Далее, зачем задавать в заголовочном файле и инициализировать в конструкторе текст пустого изображения? Лучше вписать его в кавычках прямо в вызов функции drawText()...
    На 16:20 зачем выделять память под хранение imageRect, когда rect() можно вписать сразу в drawPixmap?
    Ну и еще есть пару мелких моментов, которые порезали мне глаз, но они слишком мелочные, чтобы их подробно разбирать)

    • @Levolex
      @Levolex  9 лет назад +8

      1) Принимаю замечание. Действительно необходимости в соединении сигнал-слот в данном случае нет (разве только для наглядности взаимосвязей внутри класса). Для любопытства заглянул в исходные коды библиотечных классов: внутренние связи такого рода там встречаются, хотя далеко не всюду. В документации Qt пишут примерно так: да, соединение сигнал-слот в 10 раз медленнее прямого вызова, но в реальном приложении эта разница практически незаметна, поскольку теряется на фоне затратных операций типа new и delete (которые постоянно происходят за кулисами операций со строками, векторами и т.д.).
      2) Дело в том, что в следующем видео я дорабатываю класс виджета и текст пустого изображения становится настраиваемым. Но, конечно, в отрыве от второго видео это выглядит переусложнением.
      3) Полностью принимаю. В действительности, сразу после записи видео я понял, что делал лишнюю операцию.
      Большое спасибо за замечания. В целом я абсолютно не претендую на звание гуру C++ и Qt или на оптимальность кода в примерах. Цель уроков - взять типичную задачу или библиотечный класс и наглядно показать, как заставить это все в принципе работать.

    • @YoKy59
      @YoKy59 9 лет назад +2

      Лев Алексеевский Остаётся только пожелать Вам творческих успехов!) Кстати, я начинал учиться Qt именно по Вашим видео. И пользуясь случаем, спрошу, планируются ли уроки по использованию OpenGL?

    • @Levolex
      @Levolex  9 лет назад +1

      Артём Тютюнник
      Спасибо за добрые слова. Уроки по OpenGL пока точно не планируются - уж очень далек я от этой области. Хотя никогда не говори никогда )

  • @katerinamisik6141
    @katerinamisik6141 4 года назад

    И где код??

  • @ATTIKA17
    @ATTIKA17 4 года назад

    очень сложно, непонятно зачем приват и паблик делать, когда один раз по логике нужно обьявить. Как передать значение c lineedit в обработку и сделать простенькое вычисление с выводом. Нигде в рунете не пишут, только умом хвастают. люди пишут по разному код, голова кругом, но как я начинаю писать, так все не правильно и все не то, руки опускаются.