Ответы пользователя по тегу Qt
  • Стоит ли переписывать интерфейс с QT на QML?

    Wohlstand
    @Wohlstand
    Инженер-программист С++
    - Чистый Qt5 - для настольных GUI-приложений. Если правильно походить к вопросу, редактором форм можно спокойно творить чудеса, а также лучше не создавать готовые функции-слоты запросом из редактора форм, а сделать лябмду самому во время инициализации формы, и присобачить к сигналу с формы.
    - QML специально заточен для сенсорных интерфейсов, игр, мультимедиа-приложений: всевозможные анимашки и простота создания, поэтому, как сказал Яков Е , переходить стоит, как раз случай.
    Ответ написан
    Комментировать
  • Как программно сменить цвет QFrame?

    Wohlstand
    @Wohlstand
    Инженер-программист С++
    Для любого виджета есть setStyle(), который ест строку с css стилем.
    Ответ написан
    1 комментарий
  • Что сделать, чтобы так не было - функция printf не выводит в консоль ничего С++?

    Wohlstand
    @Wohlstand
    Инженер-программист С++
    Если собирать файл через g++ file.cpp -o file.exe, то думаю проблем не будет. Хотя как тут упомянули, попробуй добавить fflush(stdout); сразу после всех printf(); перед getch(); Из-за того, что я в своём Qt-приложении перенаправил вывод с qDebug() в файл, то чтобы просто отпечатать в отладочной консоли, я писал printf() и тут же fflush(stdout); иначе все сообщения выводятся только после закрытия приложения
    Ответ написан
    Комментировать
  • Как сделать возможность выделять и хватать невидимые (полностью прозрачные) объекты в QGraphicsScene?

    Wohlstand
    @Wohlstand Автор вопроса
    Инженер-программист С++
    Фуф, сам нашёл решение:
    дело в самих QGraphicsPixmapItem. Всё элементарно, просто установить режим формы на "BoundingRectShape"
    Item->setShapeMode(QGraphicsPixmapItem::BoundingRectShape);
    Ответ написан
    Комментировать
  • Как реализовать двустороннюю связь между классами С++ MainWindow mdiSubWindow GraphicsScene?

    Wohlstand
    @Wohlstand Автор вопроса
    Инженер-программист С++
    Всё, я решил задачу сам!
    Делюсь с теми, кто задаётся тем же вопросом:

    Для этого я использовал метод "внешний указатель" для обеспечение обратной связи сцены в MainWindow.

    Спасибо за подсказку одному моему австрийскому другу.

    1) создаём статический указатель (на всякий случай, я запаковал его внутрь класса)
    class MainWinConnect
    {
    public:
        static MainWindow * pMainWin;
    };

    и где-нибудь создаём тело для этого же указателя:
    MainWindow * MainWinConnect::pMainWin;

    2) В конструкторе нашего класса MainWindow просто записываем адрес самого себя прямо в наш указатель:
    MainWinConnect::pMainWin = this;

    3) Теперь стало возможным обращаться к функциям MainWindow практически из любого места, даже если объект класса MyScene создан непосредственно внутри самого MainWindow.
    class MainWindow
    {
       public:
          void callMe(int someData);
         ...
       MyScene * scene;
    }
    
    void MyScene::doSomething()
    {
           ...
           MainWinConnect::pMainWin->callMe(1234);
           ...
    }


    Недостаток метода: подходит для классов-одиночек, поэтому любые обратные обращения лучше выполнять через сигналы-слоты, либо размещать все важные указатели прямо в классе-дочке
    Ответ написан
    Комментировать