我想将文本放在一个气泡中,我希望我的气泡等于文本宽度,但如果文本长度太长,我希望文本自动换行并等于父宽度.
此代码有效,但如果文本太长,文本不会换行:
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) 这是我的代码:
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)
我该怎么办?
大家好,我的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) 我有这个信号
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)
我究竟做错了什么?
提前致谢
我希望在元素变得可见时绘制动画(应该是平滑的,而不是整体)
我试过这个
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仍然会立即出现
我该如何使用这样的动画?
我目前正在使用Qt3D模块在C++/Qt5中编写游戏.
我可以在QGLView上渲染场景(QGLSceneNodes),但现在我不得不用一些GUI元素重复绘制场景.我还没有决定是否使用QML或C++来定义界面的外观,所以我愿意接受两者的解决方案.(注意,QML模块称为QtQuick3D,C++模块称为Qt3D,它们都是Qt5的一部分.)
我非常喜欢基于QML的解决方案.
我该如何做一些过度涂色?
必须具备以下条件:
我认为这只是使用另一个QGLSceneNode用于2D GUI部分.但是我认为定位和定向一些场景节点以便在渲染期间(使用顶点着色器)重新定位和重新定位没有意义,引入数值误差并且看起来效率低下.
是否正确使用另一个"GUI"顶点着色器?
(如何)我可以一起制作后期渲染效果和重复绘画?
如果我可以执行以下后期渲染效果,那将是非常好的:
当我使用特殊的着色器程序实现重绘时,我发现了一个问题:我无法访问GUI后面的像素来应用高斯模糊等效果,使GUI看起来像玻璃.我必须将场景渲染到另一个缓冲区而不是QGLView.这是我的主要问题......
我已经安装了Qt SDK 5.0.0 beta 2和Qt Creator 2.6.0.它会检测到包,但会发出"未安装qmlviewer"的警告.我找了它,它在SDK bin文件夹中.我能做什么?我使用ubuntu 12.04并将SDK二进制文件添加到PATH中.我可以通过终端查看QML文件.
是否可以为QML中的备用ListView项目分配2种颜色?我想将第1个列表项目涂成黑色,然后将第2个列表项目涂成蓝色,然后将第3个项目涂成黑色,然后将第4个项目涂成蓝色,依此类推......
如何在qml中实现这个功能?请分享你的想法.谢谢.
我的设置是 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! ").
任何建议都将受到高度赞赏.
我对Qt QML中的模块感到困惑.我已经阅读了所有的文档,但它没有说明一些基本的想法.
我知道我可以将一堆QML文件放入一个目录中并添加一个qmldir文件来描述一个已识别的模块.当我这样做并调整QML_IMPORT_PATH时,QtCreator很高兴并停止强调导入ModuleName 1.0行.
所以创作者很高兴,但它不起作用.我没有安装模块.我的问题是:
对不起,对于所有这些问题,但这些模块的基础知识还不清楚.我不明白"模块"是仅仅是文件共享还是编译单元.
谢谢你的帮助.
qml ×10
qt ×9
qt5 ×3
c++ ×2
qt4 ×2
animation ×1
opengl ×1
properties ×1
qt-creator ×1
qt-quick ×1
qt3d ×1
resolution ×1
sample ×1
screen ×1
transition ×1