Есть ли «простой способ» добавления пользовательского интерфейса в приложение Qt при использовании QGraphicsView?

Я использую QGraphicsView для отображения случайно сгенерированных полигонов в QGraphicsScene, и все это работает отлично и денди, но теперь я хочу добавить пользовательский стиль пользовательского интерфейса в свое приложение, и это оказывается довольно раздражающим делать все вручную, в то время как есть так много замечательных вариантов, таких как QtQuick. Можно ли вообще использовать QtQuick или что-то подобное вместе с GraphicsView?

Краткое примечание: Я новичок в Qt, поэтому я могу упустить что-то очевидное здесь!

Обновлено:
Добавлено изображение для пояснения, я просто хочу изменить ползунки и кнопки, чтобы они имели собственную текстуру!

Есть ли «простой способ» добавления пользовательского интерфейса в приложение Qt при использовании QGraphicsView?

Добро пожаловать на stackoverflow.com! - Это зависит от того, как вы хотите, чтобы ваш пользовательский интерфейс выглядел. Эскиз очень поможет улучшить ваш вопрос. Вот несколько подсказок: Вы можете просто добавить виджеты вокруг вашего QGraphicsView в тот же макет. Если вы используете QML, вы можете добавить туда свои элементы управления. Вы даже можете наложить на вид виджеты, хотя это не идеально. Вы можете использовать QGraphicsWidget для размещения потомков QWidget в QGraphicsScene (хотя это немного уродливо).

Martin Hennings 29.05.2019 13:13

Спасибо за быстрый ответ! Я добавил изображение для пояснения. Я хочу изменить ползунки и т. д. с левой стороны, чтобы иметь собственную текстуру! Если я правильно понял, вы советуете мне поместить их в отдельный виджет и отредактировать этот виджет с помощью QML/QtQuick?

Wessel Mast 29.05.2019 14:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте класс QQuickWidget для встраивания представления QML в виджеты Qt.

Например:

// main.qml
Item {
    id: main
    visible: true
    width: 200

    Column {
        ComboBox {
            model: ["Option 1", "Option 2", "Option 3"]
        }

        Slider {
        }
        Slider {
        }
        Slider {
        }
    }
}
// main.cpp
#include <QQuickWidget>

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);


    QQuickWidget *view = new QQuickWidget;
    view->setSource(QUrl(QStringLiteral("qrc:/main.qml")));

    QWidget* widget = new QWidget();
    QHBoxLayout* layout = new QHBoxLayout(widget);
    layout->addWidget(view);
    layout->addWidget(new QLabel("A classic widget"));

    widget->show();
    return app.exec();
}

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

Другой вариант стилизации — использование таблиц стилей. См. Справочник по таблицам стилей Qt

Если вам неудобно настраивать виджеты в коде, попробуйте Qt-дизайнер.

Я использую эти 2 инструмента для создания стилизованных UI-приложений с помощью Qt и нахожу их очень удобными.

Другие вопросы по теме