小编Bru*_*ean的帖子

无法在QML图像中加载图像源

这看起来非常基本,但出于某种原因,我无法在下面的超简单QML应用程序中使用图像源.

仅供参考,我正在运行基于Qt 5.3.2的Mac OS-X 10.9.5,Qt Creator 3.2.1.

import QtQuick 2.3
import QtQuick.Controls 1.2

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

    Image {
        id: image1
        x: 10
        y: 10
        width: 100
        height: 100
        source: "testImage.png"
    }
} 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

qrc:/main.qml:10:5: QML Image: Cannot open: qrc:/testImage.png
Run Code Online (Sandbox Code Playgroud)

已创建应用程序窗口但未显示任何图像.我也试过在Rectangle中包装图像,但这没有用.

我在这做错了什么?

"testImage.png"位于项目目录中,我尝试了各种方法来使用资源指定图像路径,绝对,相对,甚至使用QML UI设计器手动指定图像源.

我还要提到为了让Qt 5.3.2工作,我遵循了HERE建议的修改.

谢谢.

qt image qml

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

从QAbstractListModel删除项目后QML崩溃

我在带有OS-X 10.8.5的Mac上运行Qt 5.1.1和QtCreator 2.8.1.我有一个管理ImageData对象的QAbstractListModel.我可以在main.cpp中注册ImageProvider后使用GridView加载图像并在QML中正确显示它们.

接下来,我在视图中选择单个图像,例如,下面显示了几个选定的图像,并带有橙色边框:

在此输入图像描述

然后是C++模型函数:deleteSelected(),产生预期的结果:

在此输入图像描述

但是,当我试图调整窗口大小时,通过抓住其中一个角落,我会崩溃.堆栈跟踪说:异常类型:EXC_CRASH(SIGABRT),我得到Qt错误:

ASSERT failure in QList<T>::at: "index out of range", … QtCore/qlist.h, line 452
The program has unexpectedly finished.
Run Code Online (Sandbox Code Playgroud)

所以也许我不正确地删除了模型项目或未能通知模型的变化,但我认为开始和结束RemoveRows发出了正确的信号来处理同步?毫无疑问,我遗漏了其他一些事情.

我还调用了begin和end ResetModel,它可以防止应用程序在调整大小后崩溃,但在这种情况下,附加到模型的任何其他视图都会恢复显示所有原始项目.

我已经搜索了一个解决方案,尝试了大量的代码实验,并研究了这里,这里,这里以及其他几个地方发布的代码.

似乎无法让这个工作正常,任何建议?谢谢!

以下是一些相关代码:


main.cpp中:

...

// Other Classes:
#include "datamodelcontroller.h"
#include "imageprovider.h"


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QQmlApplicationEngine engine;

    // Initialize and register model:
    DataModelController model;
    QQmlContext *context = engine.rootContext();
    context->setContextProperty("DataModelFromContext", &model);

    // Register image provider for each "role" to the model:
    ImageProvider …
Run Code Online (Sandbox Code Playgroud)

c++ qt qabstractitemmodel qml qabstractlistmodel

5
推荐指数
2
解决办法
3576
查看次数

我是否必须在Objective C中使用点表示法来访问结构值?

我一直在寻找这个简单问题的答案,没有运气.所以这里是:是否可以在不使用点符号的情况下访问Objective-C中的Object的结构值,即仅使用规范的消息语法?例如,假设我们有一个为粒子对象定义的CGPoint实例变量position!

//Particle.h
@interface Particle : NSObject {
CGPoint position
}
@property CGPoint position;
@end
Run Code Online (Sandbox Code Playgroud)

和相应的实现:

//Particle.m
#import "Particle.h"
@implementation Particle
@synthesize position;
@end
Run Code Online (Sandbox Code Playgroud)

并假设在其他*.m文件(比如AppController.m)中我们有:

a_particle = [Particle alloc];
[a_particle setPosition:CGPointMake(x_val,y_val)];
Run Code Online (Sandbox Code Playgroud)

那为什么我们不能使用:

[[a_particle position] x];
Run Code Online (Sandbox Code Playgroud)

得到x_val而不是:

a_paticle.position.x;
Run Code Online (Sandbox Code Playgroud)

注意到后者工作正常?另请注意

[a_particle position].x;
Run Code Online (Sandbox Code Playgroud)

会工作,但我试图用点符号避免混乱.我的预感是结构实例变量必须使用点表示法来访问它的值(在这种情况下是x_val和y_val),这是真的吗?

syntax objective-c

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

所有GPU都使用相同的架构吗?

我对nVIDIA CUDA有一些经验,现在我也在考虑学习openCL.我希望能够在任何GPU上运行我的程序.我的问题是:每个GPU都使用与nVIDIA相同的架构(多处理器,SIMT结构,全局内存,本地内存,寄存器,现金......)?

非常感谢你!

cuda gpgpu opencl

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