Неваляшка в C ++ / Qt - PullRequest
       3

Неваляшка в C ++ / Qt

0 голосов
/ 28 марта 2020

Я пытаюсь реализовать тумблер, чтобы установить время для сигнала тревоги в C ++. Тем не менее, я видел только тумблеры в Qt, быстрые и поэтому закодированные в QML. Теперь я попытался получить код QML в своем коде C ++, выполнив:

void SmartAlarm::showTumbler(){

    // Create the QML view
    QQuickView* quickView = new QQuickView(QUrl(":/files/includes/AlarmTumbler.qml"));

    // Make the QML view resize when the parent is resized
    quickView->setResizeMode(QQuickView::SizeRootObjectToView);

    QWidget* quickWidget = QWidget::createWindowContainer(quickView);
    rightLayout->addWidget(quickWidget);
}

Мой файл QML выглядит следующим образом:

import QtQuick 2.12
import QtQuick.Window 2.2
import QtQuick.Controls 2.12
import QtQuick.Extras 1.4

        TumblerColumn{
            id: weekdayTumbler
            model: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
        }
        TumblerColumn {
            id: hourTumbler
            model: 24
        }
        TumblerColumn {
            id: minuteTumbler
            model: 60
        }

Все, что я получаю, это пустой белый виджет в моем макете. Что я делаю неправильно? Есть ли способ реализовать тумблер в Qt без использования QML?

1 Ответ

1 голос
/ 29 марта 2020

Я думаю, что он не находит тумблер-файл. Вы можете проверить это проще всего, запустив программу и проверив в Выходных данных приложения (Нижнее меню в QTCreator) следующее сообщение:

":/files/includes/AlarmTumbler.qml: No such file or directory"

Если вы не можете его найти, это может быть потому, что вы используете Shadow Build и файлы фактического выполнения находятся в другой папке, чем файлы QML. Чтобы решить эту проблему, вы можете go в «Проекты» и деактивировать «Shadow Build», перестроить, и вы должны увидеть тумблер.

Сама реализация должна работать нормально. Я проверил это локально, добавил все в MainWindow, хотя я не знаю, откуда взялся ваш "rightLayout".

ui->setupUi(this);

// Create the QML view
QQuickView* quickView = new QQuickView(QUrl("tumbler.qml"));

// Make the QML view resize when the parent is resized
quickView->setResizeMode(QQuickView::SizeRootObjectToView);

QWidget* quickWidget = QWidget::createWindowContainer(quickView);

this->ui->rightLayout->addWidget(quickWidget);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...