标签: qml

使用QML的全屏桌面应用程序

我有使用flex和AS3开发丰富的用户界面应用程序的经验.然而,问题是它很难在这些flex应用程序中使用现有的c ++业务逻辑.随着QML的出现,我很好奇是否有可能将Q ++业务逻辑与QT一起用于丰富的UI应用程序.

我想知道是否有可能为桌面开发全屏丰富的用户界面应用程序(在移动设备中变得越来越常见).例如(http://blog.flexexamples.com/2007/08/07/creating-full-screen-flex-applications/)Adobe有Flash Player,可以在全屏模式下使用,并运行用AS3编写的内容.是否可以使用QT/QML编写类似的应用程序?

qt4 fullscreen qml

13
推荐指数
4
解决办法
2万
查看次数

如何在QtQuick 2.0中创建滚动条?

我想在QtQuick 2.0中创建一个滚动条,

我发现该Scrollbar组件在QtQuick 1.0中可用,但我在QtQuick 2.0中找不到这样的组件.如何ListView在QtQuick 2.0中创建滚动条?

有帮助吗?提前致谢.

qt qml qtquick2

13
推荐指数
3
解决办法
2万
查看次数

如何使用QML模型?

我有一个用qml和c ++编写的GUI.有2个组合框(qt control 5.1).只要第一个组合的值发生变化,第二个组合框就必须在运行时更新.

maincontext->setContextProperty("typemodel", QVariant::fromValue(m_typemodel));

maincontext->setContextProperty("unitmodel", QVariant::fromValue(m_unitmodel));
Run Code Online (Sandbox Code Playgroud)

这是我从c ++给qml的两个模型.

ComboBox {
    id: typebox

    anchors.left: text1.right
    anchors.leftMargin: 5
    signal changed(string newtext)

    width: 70
    height: 23
    anchors.top: parent.top
    anchors.topMargin: 37
    model: typemodel

    onCurrentTextChanged: {

        mainwin.unitGenerator(typebox.currentText);

    }
Run Code Online (Sandbox Code Playgroud)

这是第一个组合框.如您所见,每次更改第一个组合框的值时,第二个组合框的c ++模型都会更新(mainwin.unitGenerator(typebox.currentText)).但它似乎没有更新组合框的模型.

如何在运行时更新qml的模型?

c++ qt combobox qml

13
推荐指数
1
解决办法
3万
查看次数

如何使用Qt Quick Controls显示消息框?

QMessageBox::information()当用户希望使用Qt Quick Controls编写QML应用程序时,相当于什么?

qt qml qt-quick qtquick2

13
推荐指数
2
解决办法
2万
查看次数

错误:未在此范围内声明'qmlRegisterType'

使用Qt 5和QtQuick 2.0

的.pro

# Add more folders to ship with the application, here
folder_01.source = qml/untitled
folder_01.target = qml
DEPLOYMENTFOLDERS = folder_01

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

# If your application uses the Qt Mobility libraries, uncomment the following
# lines and add the respective components to the MOBILITY variable.
# CONFIG += mobility
# MOBILITY +=

#CONFIG += qt plugin
#QT += qml quick

# The .cpp file …
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick

13
推荐指数
1
解决办法
8358
查看次数

QML:如何指定相对于应用程序文件夹的图像文件路径

我们正在开发我们的第一个Qt/QML应用程序(尝试技术).虽然技术看起来很有前景,但我们面临着许多意想不到的奇怪问题,这些问题在一开始就几乎放弃了.

这里有一个这样的问题.

我们希望应用程序具有以下文件夹布局:

--> ApplicationFolder
|--> qml        // QML files (also structured by subfolders)
|--> resources  // Application resources (images, sounds, data-files, etc.)
| |--> images   // Image resources (also structured by subfolders)
| |--> data     // Different data files
| |--> ...      // Other resources
|--> Application.exe   // Application executable
|--> *.dll             // DLLs application depends on
Run Code Online (Sandbox Code Playgroud)

问题是,为了指定ImageQML项目的图像文件,我们必须使用相对于QML文件的路径?!这绝对是疯了.在开发过程中,文件有时会在文件夹之间移动(你移动QML文件并且必须修复它拥有的所有路径?!); 一些不同的QML文件必须引用相同的图像(相同的图像资源,但不同的QML文件中的实际路径不同).

所以问题是:如何指定相对于应用程序文件夹的图像路径?有可能吗?

提前致谢!

PS.在我们的案例中,使用Qt的资源系统(当资源嵌入到可执行文件中时)不是一个选项.我们需要磁盘上的原始资源(包括QML文件本身,至少在开发阶段).

PPS.在花了一整天的时间通过文档/ google/stackoverflow解决了这个问题后写了这个问题; 根本没有成功(大多数示例使用资源嵌入,其他示例太简单,只使用相对路径).

qt qml qtquick2

13
推荐指数
1
解决办法
2万
查看次数

没有QtCreator,exe文件不会运行

为Windows 32位安装了Qt 5.0.1(MinGW 4.7,823 MB)

然后我创建了简单的Quick 2应用程序并编译它.应用程序位于其文件夹中,并且应用程序从QtCreator运行.我想在没有QtCreator的情况下运行这个exe文件.为此,我从C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin复制文件:

  1. Qt5Core.dll
  2. icuin49.dll
  3. libgcc_s_sjlj-1.DLL
  4. libwinpthread-1.DLL
  5. libGLESv2.dll
  6. 的libstdc ++ - 6.dll
  7. qminimal.dll
  8. Qt5Gui.dll
  9. Qt5Network.dll
  10. Qt5Qml.dll
  11. Qt5Quick.dll
  12. Qt5V8.dll
  13. qwindows.dll

然后我得到错误:

Точкавходавпроцедуру_ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCodeненайденавбиблиотекеDLIicuuc49.dll

翻译:

在库DLL icuuc49.dll中找不到过程入口点_ZN6icu_4910CharString15getAppendBufferEiiRiR10UErrorCode

如果我将exe文件复制到文件夹C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin(其中都是dll),程序运行,但没有显示.

如果我将exe文件复制到文件夹C:\ Qt\Qt5.0.1\Tools\QtCreator\bin(其中都是dll),程序不会运行.

该怎么办?程序运行的位置和库是什么?

解决了.C:\ Qt\Qt5.0.1\5.0.1\mingw47_32\bin中的最终库列表:

  1. icuin49.dll
  2. icuuc49.dll
  3. libEGL.dll
  4. libgcc_s_sjlj-1.DLL
  5. libGLESv2.dll
  6. 的libstdc ++ - 6.dll
  7. libwinpthread-1.DLL
  8. Qt5Core.dll
  9. Qt5Gui.dll
  10. Qt5Network.dll
  11. Qt5Qml.dll
  12. Qt5Quick.dll
  13. Qt5V8.dll

我忘了添加qml文件的文件夹.

qt qml qt-quick qt5 qtquick2

12
推荐指数
1
解决办法
2万
查看次数

QML - 跟踪组件的全局位置

我想跟踪一个对象的全局位置(或相对于它的一个祖先)并将其绑定到其他项目的位置.

我正在考虑使用mapFromItem如下:

SomeObject {
  x: ancestor.mapFromItem(trackedObject, trackedObject.x, 0).x
  y: ancestor.mapFromItem(trackedObject, 0, trackedObject.y).y
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是,它mapFromItem被评估一次,并且不会更新,因为其中一个参数得到更新.此外,映射有时返回由我无法在代码中跟踪的偏移量改变的新位置(但这不是手头的问题).

我的第二个想法是通过实现一个函数来计算全局位置,该函数将递归地求和偏移量,停止在提供的祖先(类似的东西calculateOffsetFrom(ancestor)).这仍然只是一个函数,就我而言,它不会被重新评估为祖先位置变化之一(除非,在该函数中,我将绑定调用它的onXChanged每一个信号的信号)沿途的祖先,这似乎是一个肮脏的解决方案).

所以最后我已经添加了我想要跟踪的对象的属性,然后我绑定到它们:

TrackedObject {
  property real offsetX: x + parent.x + parent.parent.x + parent.parent.parent.x ...
  property real offsetY: y + parent.y + parent.parent.y + parent.parent.parent.y ...
}

SomeObject {
  x: trackedObject.globalX
  y: trackedObject.globalY
}
Run Code Online (Sandbox Code Playgroud)

但是......好吧......这个根本不会扩展,而且会像它那样难看.

有谁知道如何以更清洁的方式解决这个问题?

编辑: 据我所知,在这种情况下我不能使用锚点.该SomeObject组件是一个自定义组件,从一个点到另一个点绘制贝塞尔曲线(它将连接两个TrackedObjects).为此,我需要坐标之间的差异.如果我是正确的锚,则不提供任何计算它们之间距离的方法.

qt qml qt-quick qtquick2

12
推荐指数
1
解决办法
1万
查看次数

带qt5(qml)的无框窗户

我花了很多时间在网上搜索,但没有任何帮助我..

我使用QML构建GUI,我希望他没有框架.

我试着像这样改变我的main.cpp:

#include <QtGui/QGuiApplication>
#include "qtquick2applicationviewer.h"

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);
    QtQuick2ApplicationViewer viewer;

    viewer.setMainQmlFile(QStringLiteral("qml/RR_QML/main.qml"));
    viewer.setFlags(Qt::FramelessWindowHint | Qt::Window);
    viewer.showExpanded();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我还尝试更改main.qml文件:

Window
{
    id: rootWindow
    flags: Qt.FramelessWindowHint | Qt.Window

    // my qml code here
}
Run Code Online (Sandbox Code Playgroud)

但没什么用.

我很乐意提供任何帮助,谢谢!

我合作:

  • 赢7 x64
  • Qt 5.1.1

c++ user-interface qt qml

12
推荐指数
1
解决办法
2万
查看次数

使用.ui.qml文件

在Qt 5.4中,创建新"QtQuick UI文件"时的模板生成两个文件:MyScreen.qmlMyScreen.ui.qml.

MyScreen.ui.qml文件似乎仅适用于UI,因为Qt Creator建议您只应在设计模式下编辑它.这意味着我应该在那里创建UI对象(标签,按钮等),并以某种方式MyScreen.qml在逻辑所在的文件中引用它们.原则上这听起来不错,但遗憾的是Qt没有提供如何使用这两个文件的任何示例.

以下是这些文件的内容:

MyScreen.qml:

import QtQuick 2.4

MyScreen {
}
Run Code Online (Sandbox Code Playgroud)

MyScreen.ui.qml (我在设计模式中添加了Text标签):

import QtQuick 2.4

Item {
    width: 400
    height: 400

    Text {
        id: text1
        x: 144
        y: 151
        width: 103
        height: 31
        text: qsTr("Text")
        font.pixelSize: 12
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试实例化一个MyScreen用于a StackView(见下文),但(不出所料)我没有看到标签.

main.qml :

import QtQuick 2.4
import QtQuick.Controls 1.3
import QtQuick.Window 2.2

Window {
    visible: true
    StackView {
        id: stack
        anchors.fill: parent
        initialItem: myscreen
    } …
Run Code Online (Sandbox Code Playgroud)

qt qt-creator qml qtquick2 qtquick-designer

12
推荐指数
1
解决办法
4649
查看次数