查看完整版本: [-- Chart和QtGraphicalEffects静态编译的问题 --]

QTCN开发网 -> Qt安装与发布 -> Chart和QtGraphicalEffects静态编译的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

adadadda 2017-01-13 22:48

Chart和QtGraphicalEffects静态编译的问题

  一直想静态编译代码,但是在代码中使用了Chart和QtGraphicalEffects模块。Chart模块无法在别的电脑运行,QtGraphicalEffects无法编译。

因为我想使用Control 2,所以我用的Qt 5.8,顺便吐槽一句Qt 5.7的Control 2的BUG实在有点多,并且莫名其妙。

工程文件代码如下:
  1. QT += qml quick
    QT += core gui widgets
    QT += charts

    CONFIG += c++11

    SOURCES += main.cpp

    RESOURCES += qml.qrc

    # Additional import path used to resolve QML modules in Qt Creator's code model
    QML_IMPORT_PATH =

    # Additional import path used to resolve QML modules just for Qt Quick Designer
    QML_DESIGNER_IMPORT_PATH =

    # The following define makes your compiler emit warnings if you use
    # any feature of Qt which as been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS

    # You can also make your code fail to compile if you use deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

    # Default rules for deployment.
    qnx: target.path = /tmp/${TARGET}/bin
    else: unix:!android: target.path = /opt/${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target

chart需要用到Widget里面的东西,所以必须添加Widget,并且在main.c的代码里面要app类型为QApplication
main.c文件代码如下:
  1. #include <QQmlApplicationEngine>
    #include <QtWidgets/QApplication>

    #include <QtPlugin>
    Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)

    int main(int argc, char *argv[])
    {
        QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
        QApplication app(argc, argv);

        QQmlApplicationEngine engine;
        engine.load(QUrl(QLatin1String("qrc:/main.qml")));

        return app.exec();
    }

main.qml中的代码
  1. import QtQuick 2.7
    import QtQuick.Controls 2.1
    import QtQuick.Layouts 1.0
    import QtCharts 2.1

    import QtGraphicalEffects 1.0

    ApplicationWindow {
        visible: true
        width: 640
        height: 480
        title: qsTr("Hello World")

        SwipeView {
            id: swipeView
            anchors.fill: parent
            currentIndex: tabBar.currentIndex

            Page {
                Button{
                    anchors.centerIn: parent
                    text:"First page"
                    layer.enabled: hovered
                    layer.smooth: true
                    layer.effect: DropShadow {
                        color: activeFocus ? "#330066ff" : "#aaaaaa"
                        verticalOffset: 3
                        horizontalOffset: 3
                        radius: 6
                        samples: 12
                        spread: 0.7
                    }
                }

            }

            Page {
                ChartView {
                    title: "Line"
                    anchors.fill: parent
                    antialiasing: true

                    LineSeries {
                        name: "LineSeries"
                        XYPoint { x: 0; y: 0 }
                        XYPoint { x: 1.1; y: 2.1 }
                        XYPoint { x: 1.9; y: 3.3 }
                        XYPoint { x: 2.1; y: 2.1 }
                        XYPoint { x: 2.9; y: 4.9 }
                        XYPoint { x: 3.4; y: 3.0 }
                        XYPoint { x: 4.1; y: 3.3 }
                    }
                }
            }
        }

        footer: TabBar {
            id: tabBar
            currentIndex: swipeView.currentIndex
            TabButton {
                text: qsTr("First")
            }
            TabButton {
                text: qsTr("Second")
            }
        }
    }

静态编译所用的命令符:
configure.bat -confirm-license -opensource -platform win32-g++ -mp -debug-and-release -static -prefix "D:\Qt\5.8.0_MinGW_static" -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtwebengine -skip qtwebview

这个命令符是什么意思,我只能看懂-skip qtwebengine -skip qtwebview?会不会是静态编译包在制作的时候没有把Chart和QtGraphicalEffects编译进去?

还有一个问题,在Qt 5.8默认的编译器下,DEBUG会出现如下的问题,Release版本则不会:
ASSERT failure in void QtFontFamily::ensurePopulated(): "SimSun", file text\qfontdatabase.cpp, line 425
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.

我在网上找了相关的信息,有人遇到了,但是解决办法我没有看懂。链接如下:http://blog.csdn.net/zyzhaojun/article/details/52491041


adadadda 2017-01-14 07:20
没人么?大神呢?

adadadda 2017-01-18 18:33
最后一个问题为我解决了,删除在注册表中删除红色的部分即可

adadadda 2017-01-19 21:01
求大神指导

adadadda 2017-01-28 12:14
不要沉啊,求大神帮助

adadadda 2017-02-19 09:38
求指导

adadadda 2017-02-24 09:34
求指导a

adadadda 2017-02-27 09:50
不要沉啊,求帮助啊。苦恼了我很久了,完全不知道怎么办才好。各位大神,求帮助。。。。。

adadadda 2017-02-27 16:41
              


查看完整版本: [-- Chart和QtGraphicalEffects静态编译的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled