标签: qml

Qml文本换行(最大宽度)

我想将文本放在一个气泡中,我希望我的气泡等于文本宽度,但如果文本长度太长,我希望文本自动换行并等于父宽度.

此代码有效,但如果文本太长,文本不会换行:

Rectangle {
    id:messageBoxCadre
    width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width+10
    height: messageBox.height+5
    color: modelData.myMessage ? "#aa84b2":"#380c47"
    radius: 10

    Text {
        id:messageBox
        text: '<b><font color=purple>'+modelData.message+'</font></b> '
        wrapMode: "WordWrap"
    }
}
Run Code Online (Sandbox Code Playgroud)

我试过这个文本换行,但是如果文本太小,则气泡宽度不等于文本大小:

Rectangle {
    id:messageBoxCadre
    width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width+10
    height: messageBox.height+5
    color: modelData.myMessage ? "#aa84b2":"#380c47"
    radius: 10

    Text {
        id:messageBox
        width: (modelData.messageLength>25)? (wrapper.width - 20): messageBox.width
        text: '<b><font color=purple>'+modelData.message+'</font></b> '
        wrapMode: "WordWrap"
    }
}
Run Code Online (Sandbox Code Playgroud)

qt qml qt-quick

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

ListElement字段作为属性?

这是我的代码:

import QtQuick 1.0

ListModel {
    property real firstValue: 2
    property real secondValue: 3
    property real thirdValue: 1
    id: leftGrid
    ListElement {
        icon: "Images/1.png"
        value: leftGrid.firstValue
    }
    ListElement {
        icon: "2.png"
        value: -1
    }
    ListElement {
        icon: "3.png"
        value: leftGrid.secondValue
    }
    ListElement {
        icon: "4.png"
        value: leftGrid.thirdValue
    }
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误:

ListElement: cannot use script for property value
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

qt qml

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

QML适合所有分辨率的屏幕

大家好,我的QML代码有问题.我犯了错误,我把一定的大小放到了元素上,现在我把app放到其他设备上时遇到了问题.我会将我的代码粘贴到我有宽度和高度的位置,以便您可以更改它以向我展示如何使用动态调整大小.

我需要说我用qt从qt调用qml文件:

 QDeclarativeView *view= new QDeclarativeView;
    ui->setupUi(this);

    setCentralWidget(view);

    QDeclarativeContext *ctxt = view->rootContext();
    ctxt->setContextProperty("funkcije",this);
    ctxt->setContextProperty("myModel", QVariant::fromValue(MainWindow::dataList));

    view->setSource(QUrl("qrc:/gui.qml"));
    view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
    showFullScreen();
Run Code Online (Sandbox Code Playgroud)

这是我的QML代码:

Rectangle {

    id:window
    width: 602
    height: 1000
    anchors.fill: parent
     radius: 0
     .....


     ListView {
         id: listview1
         x: 0
         y: 219
        // width: 574
        // height: 967
         width: window.width
         height: window.height
         visible: true
         keyNavigationWraps: false
         boundsBehavior: Flickable.DragAndOvershootBounds
         opacity: 1
         maximumFlickVelocity: 2500
         anchors.leftMargin: 0
         highlightMoveSpeed: 489
         contentWidth: 0
         preferredHighlightEnd: 2
         spacing: 5
         highlightRangeMode: ListView.NoHighlightRange
         snapMode: ListView.SnapToItem
         anchors.bottomMargin: 0
         anchors.rightMargin: 0
         anchors.topMargin: 219
              anchors.fill: …
Run Code Online (Sandbox Code Playgroud)

qt resolution screen qml

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

写入全局属性QML无效

我有这个信号

class SystemUICfgScanner 
{
    /*code here*/
signals:
    void error(QString desc);
    /*more code*/
};
Run Code Online (Sandbox Code Playgroud)

在QML中,我使用InfoBanner:

InfoBanner
{
    property string infodetails: ""
    id: systemuicfgErrorBanner
    text: "Error: " + infodetails
    Connections
    {
        target: cfgScanner
        onError: infodetails = desc
    }
}
Run Code Online (Sandbox Code Playgroud)

当发出错误(QString)信号时,我收到此错误

Invalid write to global property "infodetails"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

提前致谢

qt properties qt4 qml qtdeclarative

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

QML动画可见属性更改

我希望在元素变得可见时绘制动画(应该是平滑的,而不是整体)

我试过这个

states: State
{
    name: "iconOff"
    when: iconOnSwitch.checked == false
    PropertyChanges { target: selectIconRow; visible: false }
}

transitions: Transition
{
    reversible: true
    from: ""
    to: "iconOff"
    PropertyAnimation
    {
        properties: "x,y,visible"
        easing.type: Easing.InOutQuad
        from: selectIconRow
        property: "visible"
    }
}
Run Code Online (Sandbox Code Playgroud)

但selectIconRow仍然会立即出现

我该如何使用这样的动画?

animation qt transition qt4 qml

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

在Qt3D中对QGLView(不是QGLWidget)进行覆盖和后期渲染效果

我目前正在使用Qt3D模块在C++/Qt5中编写游戏.

我可以在QGLView上渲染场景(QGLSceneNodes),但现在我不得不用一些GUI元素重复绘制场景.我还没有决定是否使用QML或C++来定义界面的外观,所以我愿意接受两者的解决方案.(注意,QML模块称为QtQuick3D,C++模块称为Qt3D,它们都是Qt5的一部分.)

我非常喜欢基于QML的解决方案.

我该如何做一些过度涂色?

必须具备以下条件:

  • 在给定的屏幕坐标处绘制2D项目(图像),当然还支持alpha通道.
  • 使用系统字体绘制文本,可能首先在图像上绘制并在Qt3D OpenGL上下文中将其用作纹理.
  • 对屏幕坐标中的鼠标输入作出反应(与3D场景对象拾取相反).

我认为这只是使用另一个QGLSceneNode用于2D GUI部分.但是我认为定位和定向一些场景节点以便在渲染期间(使用顶点着色器)重新定位和重新定位没有意义,引入数值误差并且看起来效率低下.

是否正确使用另一个"GUI"顶点着色器?

(如何)我可以一起制作后期渲染效果和重复绘画?

如果我可以执行以下后期渲染效果,那将是非常好的:

  • 读取先前渲染的场景,应用一些2D图像效果(我可以设想将它们实现为片段着色器,并使用此效果着色器在最终屏幕上渲染先前渲染的缓冲区).这使我能够使GUI的某些部分看起来像具有模糊效果的玻璃.
  • 一些更高级的效果可以使场景看起来更逼真:深度和运动模糊,依赖于热量的空气闪烁,发光效果.它们都可以使用片段着色器(不应该是问题的一部分)和渲染时间内的附加缓冲区来描述.它们应该放在主屏幕渲染过程和GUI重绘之间,这就是我将它包含在这个问题中的原因.

当我使用特殊的着色器程序实现重绘时,我发现了一个问题:我无法访问GUI后面的像素来应用高斯模糊等效果,使GUI看起来像玻璃.我必须将场景渲染到另一个缓冲区而不是QGLView.这是我的主要问题......

c++ opengl qml qt5 qt3d

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

没有安装qmlviewer

我已经安装了Qt SDK 5.0.0 beta 2和Qt Creator 2.6.0.它会检测到包,但会发出"未安装qmlviewer"的警告.我找了它,它在SDK bin文件夹中.我能做什么?我使用ubuntu 12.04并将SDK二进制文件添加到PATH中.我可以通过终端查看QML文件.

qt qt-creator qml qt5

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

如何在QML中为ListView项设置备用颜色

是否可以为QML中的备用ListView项目分配2种颜色?我想将第1个列表项目涂成黑色,然后将第2个列表项目涂成蓝色,然后将第3个项目涂成黑色,然后将第4个项目涂成蓝色,依此类推......

如何在qml中实现这个功能?请分享你的想法.谢谢.

qt qml

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

{Qt5.0.2/QML/QtQuick2.0/C++}示例运行没有错误的项目?

我的设置是 Qt5.0.2 MinGW 32位.

我正在寻找具有实际C++类或至少一个的{ Qt5.0.2 / QML / QtQuick2.0 / C++ }代码项目示例(非Qt Quick 1.0)main.cpp.

我浏览了网页,浏览了我可能找到的所有示例:

但它们要么是旧的(Qt Quick 1.0),要么是纯QML + QtQuick 2.0, 或者根本不编译; 或者如果他们可以编译,他们会向我显示空对话框(例如,诺基亚代码示例中的" Status Shout! ").

任何建议都将受到高度赞赏.

c++ qt sample qml

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

Qt5没有安装QML模块

我对Qt QML中的模块感到困惑.我已经阅读了所有的文档,但它没有说明一些基本的想法.

我知道我可以将一堆QML文件放入一个目录中并添加一个qmldir文件来描述一个已识别的模块.当我这样做并调整QML_IMPORT_PATH时,QtCreator很高兴并停止强调导入ModuleName 1.0行.

所以创作者很高兴,但它不起作用.我没有安装模块.我的问题是:

  • "安装"是什么意思.我有文件目录,但我没有在任何地方"安装"它们.
  • 我应该构建/编译模块来制作DLL/.so吗?
  • 模块QML文件是否进入主应用程序的资源,否则它们在哪里可以找到?
  • 我的main.qml文件是应用程序资源的一部分,应用程序如何在运行时找到模块的资源.

对不起,对于所有这些问题,但这些模块的基础知识还不清楚.我不明白"模块"是仅仅是文件共享还是编译单元.

谢谢你的帮助.

qt qml qt5

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