- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法找出导致应用程序在退出时崩溃的原因。更让人困惑的是,它并不总是崩溃,有时会崩溃,有时不会,而且它似乎完全是任意的。
该示例基本上创建了一个自定义图像提供程序,该提供程序将静态谷歌地图 API 请求加载为 PNG 图像以在 QML 中显示。图像提供者本身可以工作,我首先怀疑问题可能与在堆栈上实例化网络访问管理器有关,但事实并非如此,我在动态实例化它时得到了相同的行为。有趣的是,崩溃似乎并不对应于任何特定的东西。只是启动和关闭应用程序有时会导致崩溃,而无需与它进行任何交互,但它通常不会在没有任何交互的情况下崩溃。有时与 map 中心和缩放的多次交互不会导致退出时崩溃,但大多数情况下会崩溃。
另一个可疑点是我为了在网络请求完成时“阻止”图像提供程序方法而实例化的事件循环。由于图像提供者的设计,图像必须通过请求它的相同方法返回,换句话说,我不能使用“推荐”方法,即从方法启动请求并通过连接其 捕获它completed
信号到另一个方法。但这似乎也不是,因为提供商总是设法提供我认为没有问题的图像。至少不是直接的,但可能是网络访问的一些副作用?
顺便说一句,Qt 会发出一些警告,仅在首次使用网络访问管理器时出现。对于 Qt 5.2,我只有这四个:
QSslSocket: cannot resolve TLSv1_1_client_method
QSslSocket: cannot resolve TLSv1_2_client_method
QSslSocket: cannot resolve TLSv1_1_server_method
QSslSocket: cannot resolve TLSv1_2_server_method
QSslSocket: cannot resolve SSL_select_next_proto
...在升级到新的 5.3.1 后希望删除这些警告,实际上除了前四个之外还出现了两个:
QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
也许这些警告与崩溃有某种关系?
这也是应用程序崩溃信息:
Fault Module Name: ntdll.dll
Fault Module Version: 6.1.7601.17725
Fault Module Timestamp: 4ec49b8f
Exception Code: c0000005
Exception Offset: 000332a0
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
平台信息:Windows 7 x64,标准 32 位 Qt,使用 GCC 构建
相关代码如下:
C++
class MapReader : public QQuickImageProvider {
public:
explicit MapReader() : QQuickImageProvider(QQuickImageProvider::Pixmap, QQmlImageProviderBase::ForceAsynchronousImageLoading) { }
QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) {
QNetworkAccessManager m;
Q_UNUSED(requestedSize)
Q_UNUSED(size)
QEventLoop loop;
QObject::connect(&m, SIGNAL(finished(QNetworkReply*)), &loop, SLOT(quit()));
QNetworkReply * r = m.get(QNetworkRequest(QUrl(id)));
loop.exec();
if (r->error()) {
qDebug() << "Error: " << r->errorString();
r->deleteLater();
return QPixmap();
}
QPixmap p;
p.loadFromData(r->readAll());
r->deleteLater();
return p;
}
};
QML
Rectangle {
id: root
width: 360
height: 360
property string url : 'image://map/http://maps.googleapis.com/maps/api/staticmap?center=' + n + ',' + e + '&zoom=' + zoom.value + '&size=' + width + "x" + height + '&maptype=satellite'
property real n : 48.858222
property real e : 2.2945
Timer {
id: t
repeat: false
interval: 100
running: false
onTriggered: {
placeholder.source = root.url
}
}
function refresh() { if (t.running) t.restart(); else t.start() }
Image {
id: placeholder
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
var xOffset = (mouseX / width - 0.5) * (360 / Math.pow(2, zoom.value))
var yOffset = (mouseY / height - 0.5) * (360 / Math.pow(2, zoom.value))
console.log(xOffset + " " + yOffset)
root.n = root.n - yOffset
root.e = root.e + xOffset
root.refresh()
}
}
Slider {
id: zoom
value: 17
maximumValue: 21
minimumValue: 1
stepSize: 1
x: 80
y: parent.height - 25
width: parent.width - 90
onValueChanged: root.refresh()
}
}
最佳答案
问题出在您的图像提供程序类中。我不确定确切的位置,但它在那里,因为没有它我无法重现崩溃。我之所以能够说出这一点,是因为您的案例中的图像提供程序完全没有必要 - QtQuick Image
元素将按原样接受并使用 Google API url 源。
关于c++ - Qt 应用程序在退出时崩溃,操作系统应用 "fault tolerant heap shim",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25932804/
我正在使用 Qt 语言学家翻译一个 ui 文件。我使用 lupdate 获取了它的 ts 文件,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现我似乎必须将 tr() 添加到
我想在 Qt Creator 中创建下面的简单控制台应用程序: #include int main(int argc, char* argv[]) { std::cout #include
我想将 libQtGui.so.4 libQtNetwork.so.4 和 libQtCore.so.4 包含在与我的应用程序所在的目录相同的目录中。我如何让 Qt 理解这一点? y 目的是拥有一个使
我有一个充满 QPushButtons 和 QLabels 以及各种其他有趣的 QWidget 的窗口,所有这些都使用各种 QLayout 对象动态布局...而我想做的是偶尔制作一些这些小部件变得不可
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 7 年前。 Improve
我想知道 Qt 是否将下面代码的“版本 1”之类的东西放在堆上?在版本 1 中,Qt 会将 dirStuff 放在堆栈上还是堆上?我问是因为我有一种感觉,Java 将所有数据结构放在堆上......不
这个问题是关于 Qt Installer Framework 2.0 版的。 在这一点上,使用 Qt 安装程序框架的人都知道,如果不进行自定义,您根本无法通过安装程序覆盖现有安装。这样做显然是为了解决
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
因为我在我的计算机上安装了 Qt 4.8.4 和 Qt 5.1,所以我遇到了问题。 当只有 Qt 4.8.4 存在时,一切都很好。 当我添加 Qt 5.1 时,这个工作正常,但 Qt 4.8.4 给了
我无法在我的 Ubuntu 12 中安装更多软件包。我尝试了 apt-get install -f ,以及许多其他类似的技巧,但在找到解决方案方面没有进展。 这是属于 Qt 的损坏包: 以下包具有未满
我正在尝试使用 Virtual Box 中的 Ubuntu 机器复制我们目前在物理 Ubuntu 服务器上运行的应用程序。它是一个 QT 应用程序,但在服务器上我们使用 NPM 的 pm2 运行它。安
问题: Qt Creator 是用 Qt Creator 构建的吗? 同样,Qt Designer 是用 Qt Designer 构建的吗? 顺便说一句,为什么有两个 Qt IDE?他们是竞争对手吗?
当我使用 QWidget设计用户界面时,我总是对它的大小属性有点困惑。有size policy , geometry和 hintSize . 我只知道size policy之间的关系和 hintSiz
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我想知道是否有一种很好的方法可以让用户像 LabView 一样创建节点图(有限制)。 像这样的东西: 我见过http://www.pyqtgraph.org/ ,这似乎有类似的东西,我确实打算使用 P
在 Qt 中是否有一种跨平台的方式来获得用户喜欢的固定宽度和比例字体? 例如,在 cocoa 中,有 NSFont *proportional = [NSFont userFontOfSize:12.
我想使用 Qt 和 C++ 制作这样的交互式图表:http://jsxgraph.uni-bayreuth.de/wiki/index.php/Cubic_spline_interpolation 关
我正在编写一个嵌入式设备屏幕的模拟(其中包含主 QWidget 顶部的自定义小部件),虽然屏幕的原始尺寸是 800x600,但我希望能够按比例放大和缩小它拖动窗口的角。如果不使用网格布局和担架(不会向
在下面的示例中,我是否必须从堆中删除对象?如果是的话,怎么办? #include #include #include #include #include int main(int argc,
来自 Web 开发背景,我现在进入 QT 应用程序开发。 使用 QFonts 我已经看到我显然只有两个选择,在 QT 中定义字体大小;按像素大小或点大小。 在制作网页布局时,我习惯于以相对方式定义所有
我是一名优秀的程序员,十分优秀!