QT: рендеринг в релизе отличается от отладки - PullRequest
0 голосов
/ 24 октября 2019

У меня странная проблема с приложениями на C ++ и QML, которые отображаются по-разному, в то время как я нахожусь в отладке или выпуске: enter image description here

Визуализация отладки (слева)правильный. В релизе (справа) цвета акцента неверны, и все шрифты больше. Это также, кажется, пропускает некоторые тени. Обе сборки выполняются в Visual 2015 после полной очистки решения.

Вот как настроено мое окно:

MainWindow::MainWindow(QMainWindow * parent) :QMainWindow(parent)
{
    QApplication::setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
    mQuickWidget = nullptr;
    setAttribute(Qt::WA_DeleteOnClose, true);

    this->setMinimumSize(640, 480);

    mQuickWidget = new QQuickWidget(this);

    QQuickStyle::setStyle("Material");

    setCentralWidget(mQuickWidget);
    this->setWindowTitle("Générateur de licence");

    qmlRegisterType<mycompany::Licensor>("com.mycompany.licensor", 1, 0, "Licensor");

    mQuickWidget->setSource(QUrl(QStringLiteral("qrc:/main.qml")));
    mQuickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
    mQuickWidget->setAttribute(Qt::WA_AlwaysStackOnTop);

    mQuickWidget->show();
}

И эта часть QML:

import QtQuick 2.6
import QtQuick.Window 2.2
import QtQuick.Controls 1.4 as Controls14
import QtQuick.Controls 2.2
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3
import QtQuick.Dialogs 1.1
import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.1
import com.prynel.licensor 1.0

Item {
    Material.theme: Material.Light
    Material.accent: Material.DeepPurple
    id: base
    width : 900
    height: 500

    function twoDigit(n)
    {
       return n > 9 ? ""+n : "0"+n;
    }

    Licensor {
        id: licensor
    }

    TabBar {
        id: bar
        width: parent.width
        anchors.top: parent.top
        anchors.left: parent.left
        TabButton {
            text: qsTr("1. Licence")
        }
        TabButton {
            text: qsTr("2. Presets")
        }
        TabButton {
            text: qsTr("3. Options")
        }
        TabButton {
            text: qsTr("4. Finalisation")
        }
    }

    StackLayout {
        width: parent.width
        anchors.bottom: parent.bottom
        anchors.top: bar.bottom
        currentIndex: bar.currentIndex
        //LICENCE
        Item {
            id: licenceTab
            Label {
                id: labelacti
                text: qsTr("Code d'activation :")
                anchors.left: parent.left
                anchors.leftMargin: 15
                anchors.top: parent.top
                anchors.topMargin: 35
            }

            TextField {
                id: input_codeacti
                anchors.left: parent.left
                anchors.leftMargin: 230
                anchors.verticalCenter: labelacti.verticalCenter
                width: 201
                antialiasing: true
                placeholderText: qsTr("Code d'activation")
                onTextChanged: {rect_result.visible = false;}
            }


        }

        // Lot of other fields

    }

    Controls14.Calendar {
        property var linkedItem
        id: calendar
        parent: base
        visible: false
        anchors.verticalCenter: base.verticalCenter
        anchors.horizontalCenter: base.horizontalCenter

        onClicked:
        {
            linkedItem.text = base.twoDigit(date.getDate()) + "/" + base.twoDigit((date.getMonth() + 1)) + "/" + base.twoDigit(date.getFullYear());
            calendar.visible = false;
        }
    }
}

Я не помещаю все, потому что есть много полей, которые не должны быть источником проблем.

Что может вызвать этот другой результат в пользовательском интерфейсе?

1 Ответ

1 голос
/ 25 октября 2019

Может быть, вы предоставляете специальный файл конфигурации Qt Quick Controls qtquickcontrols2.conf ?

Файл конфигурации обычно внедряется в ресурсы приложения, но он также может находиться в каталоге, указанном переменной среды QT_QUICK_CONTROLS_CONF. Есть еще больше переменных среды , которые могут влиять на стили. Посмотрите настройки проекта вашего QtCreator и проверьте различия в среде между параметрами Debug и Release run.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...