我有以下代码:
Item {
width: fos.width; height: fos.height
Rectangle {
id: fos
width: 120; height: 120
color: "red"
MouseArea {
anchors.fill: parent
onClicked: {
if (fos.color == "red") fos.color = "gray"
else fos.color = "red"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想Rectangle在MouseArea点击时更改颜色.但是,代码不起作用.我的错在哪里?
我有一个ListModel,它存储一个字符串“ cityName”和一个实际值“ TimeZoneOffset”。顾名思义,cityName保存城市名称,TimeZoneOffset保存时间偏移量(距UTC的时间),以分钟为单位。
ListModel {
id: worldCity
ListElement {
cityName: "London"
TimeZoneOffset: 0
}
ListElement {
cityName: "Amsterdam"
TimeZoneOffset: 120
}
}
Run Code Online (Sandbox Code Playgroud)
然后在ListView中使用此模型。ListView具有如下代码示例所示的结构。
ListView {
model: worldCity
currentIndex: -1
delegate: ListItem.Standard {
text: cityName
Label {
text: timeOffSet + currentSystemTime
}
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我的ListView显示的是修改后的输出,而不是直接输出listModel元素。我需要每分钟更新一次ListView元素,以显示某个城市的当前时间。我计划使用计时器每分钟更新一次。
如何更新每个listView元素?
我用它创建了一个QPixmap并绘制了较小的QPixmaps QPainter.我想用图像作为背景QQuickItem.是否有捷径可寻?
我已经将PNG图像加载到我的QML代码中并启用了拖动它.
Image {
source: "image.png"
width: 128
height: 128
MouseArea {
anchors.fill: parent
drag.target: parent
}
}
Run Code Online (Sandbox Code Playgroud)
问题是整个图像是可选择的,甚至是我需要在这些区域上禁用选择的透明部分.我甚至试图Canvas从图像中制作,但问题仍然存在.
Canvas {
width: 128
height: 128
Component.onCompleted: loadImage("image.png")
onImageLoaded: requestPaint()
onPaint: {
var ctx = getContext("2d")
var im = ctx.createImageData("image.png")
im.data[3] = 128
ctx.drawImage(im, 0, 0)
}
MouseArea {
anchors.fill: parent
drag.target: parent
}
}
Run Code Online (Sandbox Code Playgroud)
这是唯一可以选择红色部分的图像:
任何的想法?
我有一个QQuickItem创建的自定义,我想创建一个圆角的窗口。因此,我实施了QQuickPaintedItem并导出到QML。问题在于该项目的子项正在通过该项目的边界矩形扩展,该矩形是一个矩形,而不是我想要的圆角矩形。外观如下:
这是我的代码:
main.qml
import QtQuick 2.7
import QtQuick.Window 2.2
import mycustomlib 1.0
Window {
id: wnd
width: 300
height: 280
visible: true
flags: Qt.FramelessWindowHint
color: "transparent"
x: 250
y: 250
MyCustomWindow {
id: playerFrame
anchors.fill: parent
radius: 25
Rectangle {
color: "beige"
anchors.margins: 5
anchors.fill: parent
}
}
}
Run Code Online (Sandbox Code Playgroud)
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QUrl>
#include "mycustomwindow.h"
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
qmlRegisterType<MyCustomWindow>("mycustomlib", 1, 0, "MyCustomWindow");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); …Run Code Online (Sandbox Code Playgroud) 我一直在玩对话,有些东西困扰着我.
我有以下代码:
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
Button {
id: click
x: 285
y: 189
text: qsTr("Click")
onClicked: dlgTest.open()
}
Dialog{
id:dlgTest
visible:false
contentItem: Rectangle{
width: 300
height: 300
TextField{
id: tfText
anchors.top: parent.top
}
Button{
anchors.top: tfText.bottom
onClicked: dlgTest.close()
text: "Close"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我第一次打开它时,我将一些文本添加到TextField然后关闭它.但是,如果我再次打开它,文本仍将存在.我想要的是当我第一次打开它时(使用空的TextField)将对话框"重置"到它的原始状态.调用方法"close"似乎与将visible变为false完全相同.
有没有办法做这个"重置"?
我有一个其他对话框,有很多控件,很烦人必须手动恢复一切.
为VideoOutputQML对象提供自定义帧源到底需要做什么?
VideoOuput本身是否QAbstractVideoSurface向“源” 提供类的实例 ?
Qt5文档说了有关提供此问题的以下内容:
如果要扩展自己的C ++类以与VideoOutput互操作,则可以为基于QObject的类提供mediaObject属性,该属性公开具有可用QVideoRendererControl的QMediaObject派生类,也可以为基于QObject的类提供可写videoSurface属性可以接受基于QAbstractVideoSurface的类,并且可以遵循正确的协议向其提供QVideoFrame。
根据以下文档,我执行了以下操作:
myFrameProvider来源于QObject具有可写的videoSurface属性。myFrameProvider类,并使其在与“ VideoOutput”小部件相同的QML上下文中可访问。之后-每当访问“ videSurface”属性时,我都会遇到段错误。我应该设置自己的视频界面属性吗?
场景:
我在QML中有一个Image组件,其中包含一个纵横比不同的QImage。
码:
Window {
id: app_window
visible: true
Rectangle {
id: my_image_view_container
width: app_window.width
height: app_window.height
Image {
id: my_image
// changes at runtime based on the image my app selects
source: "random/path/to/an/image.jpg"
width: sourceSize.width
height: sourceSize.height
scale: Qt.KeepAspectRatio
}
}
}
Run Code Online (Sandbox Code Playgroud)
问:
我如何设定width及height的my_image_view_container,以适应my_image完全内my_image_view_container不影响到其长宽比?
例如,我正在寻找一种在多个QML文件之间共享只读值的简单方法。可以说我有一个label元素:
Label {
id: titleLabel
text: listView.currentItem ? listView.currentItem.text : "IDEAL Networks"
font.pixelSize: 20
elide: Label.ElideRight
horizontalAlignment: Qt.AlignLeft
verticalAlignment: Qt.AlignVCenter
Layout.fillWidth: true
color: red;
padding: {
left: 14
}
}
Run Code Online (Sandbox Code Playgroud)
该color和padding值需要在其他QML文件和同一文件的其他领域使用。
除了重新键入red和在多个位置14之外,还有一种方法可以创建包含这些值的共享库,从而使以后更容易进行全局更新?
*更新*
我已按照此处的说明进行操作:http : //doc.qt.io/qt-5/qtqml-modules-qmldir.html
但是,当导入自定义CustomStyles 1.0模块时,出现错误-未安装模块“ CustomStyles”。
//Style.qml with custom singleton type definition
pragma Singleton
import QtQuick 2.0
QtObject {
property int textSize: 20
property color textColor: "green"
}
// qmldir declaring the singleton type
module CustomStyles
singleton Style …Run Code Online (Sandbox Code Playgroud) 我在一个页面上有3个列表视图,我想创建一个ListView可以与每个列表一起使用的单个标题组件.
所以我有一个ListView:
ListView {
id: listOne
spacing: 5
header: headerComponent
model: ListOneModel
}
Run Code Online (Sandbox Code Playgroud)
它引用了以下标头组件:
Component {
id: headerComponent
Rectangle {
width: ListView.view.width
height: 50
Label {
text: "List One"
font.pixelSize: 20
elide: Label.ElideRight
width: ListView.view.width
padding: {
left: 14
}
background: Rectangle {
color: "red"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何使标题组件可重用,以便当我连接ListView到标题时,我还可以传入不同的标题?
我知道我可以更改标题组件并添加titleText属性,如下所示:
Component {
id: headerComponent
property string titleText: "My Title"
Rectangle {
width: ListView.view.width
height: 50
Label {
text: titleText
font.pixelSize: 20
elide: Label.ElideRight …Run Code Online (Sandbox Code Playgroud)