问题标签 [qt4.8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - QDataStream 有时使用 32 位,有时使用 40 位浮点数
我正在编写一个应用程序,该应用程序应该将浮点数组写入 WAVE 文件。我为此使用了 QDataStream,但这会导致我无法解释的非常不可能的输出。似乎 QDataStream 有时会选择 32 位浮点数,有时会选择 40 位浮点数。这会弄乱整个输出文件,因为它必须遵守严格的格式。
我的代码大致如下所示:
我想不出为什么这段代码会产生这样的副作用。所以我做了一个最小的例子来了解发生了什么。我用这个替换了for循环:
然后我使用 Matlab 打开输出文件并查看写入文件的字节。那些是:
我非常随意地选择了这些值,它们恰好具有这种效果。一些值导出为 4 字节,而另一些值导出为 5 字节数字。有谁知道这可能是什么原因?
编辑:
当检查两个花车的大小时,它们看起来确实有 4char
秒长,不过:
qt - 停止 QAudioOutput 的正确方法(或错误?)
(在 Qt 4.8.2 4.8.3、Qt MultimediaKit 1.2、Linux 下(编辑:Kubuntu 12.10、qt from packages)
我有一个QAudioOutput,它每 20 毫秒输入一次数据。如果我通过::stop() 停止它,它会发出stateChanged()信号,表明它已停止(立即;它的线程与控制线程相同。即使它们都在 GUI 线程中或两者都存在,症状仍然存在在另一个)。
然后我将其删除,但每 10 次尝试中会出现一次或两次崩溃,并出现以下回溯:
这似乎是某种仍在尝试访问旧QAudioOutput的脉冲线程(没有运气)。通过信号/插槽,这应该是线程安全的(根据QObject::~QObject,我从控制线程中删除它并没有做错任何事情(由外部信号调用,而不是通过QAudioOutput的信号顺便说一句)。
即使我调用deleteLater()也会发生崩溃。我做错了什么,或者这可能是 Qt 中的错误?如果这是一个错误,我的理论是它没有获得更多数据,这会导致带有BufferUnderflow错误的空闲状态,该错误来自没有正确同步的 Pulse。作为一种解决方法,我将停止喂它并在停止之前等待空闲,但我仍然不明白这种崩溃是如何发生的。
编辑:工作示例(更改一个简单的 gui 应用程序)
在实际应用中会发生 VoIP 呼叫;大多数时候它关闭正常,但有时它会崩溃。以下示例尝试模拟单个 20ms 数据包播放(之前音频初始化,之后音频停止;我们等待 22ms 使缓冲区下溢/状态更改为空闲,在我看来这是关键。崩溃本身确实由于时序值低(它只是有助于更快地崩溃)而不会发生,在生产代码中它可能会因实际调用而崩溃。)
附加项目文件:
python - 使用 Pyinstaller 2.0、PySide 1.1.2 Bindings 和 Qt 4.8 时如何在应用程序中包含图标
什么脚本看起来像
工作应用程序应该是什么样子
在发布之前,我查看了以下问题并尝试将其用作使我的脚本正常工作的指南,但它的用处不大
PyInstaller 不会将 PyQt 的图像加载到 GUI
它所做的最好的是将我的图标包含在结果目录中,如下所示
(图标包括这里的图片)
下一个我什至不知道它在说什么,但如果我知道它实际上在做什么,我觉得它可以解决我的问题, 使用 PyInstaller (--onefile) 捆绑数据文件
我有 rtfm,不幸的是,其中大部分都超出了我的想象。我认为与我的问题有关的以下部分
http://www.pyinstaller.org/wiki/Recipe/CollectDatafiles
我不知道如何在我的规范文件中实际实现它
以下 http://www.pyinstaller.org/export/v2.0/project/doc/Manual.html?format=raw#accessing-data-files也是如此
我已经完成了以下及其变体,包括使用 -F 参数
我使用 pyside-uic.exe 将我的 mainWindow.ui 文件转换为 mainGui.py 文件
然后使用 pyside-rcc.exe 将 icons.qrc 转换为 icons_rc.py 进行转换
(注意:我在将最初位于 PySide 文件夹中的 exe 副本放入我的路径中的 C:\Python27\Scripts 文件夹后转换了文件,以便我可以从任何地方调用它)
我将我的图标存储在图标文件夹中
为了使用 Pyinstaller 在我的控制台中制作可执行文件,我使用了以下命令来制作我的规范文件
C:\Pyinstaller-2.0> python utils\Makespec.py --windowed --name="16TangoTest" C:\Exmake\16MainWindowVideo.py
制作规范文件后,我将其从 pyinstaller 文件夹中剪切,并将其添加到我的 Exmake 文件夹中
然后我修改它以包含我的图标文件夹使用
树(C:\Exmake\icons),并将其附加到 a.binaries 上方的行中收集
上面的手册和第一个答案表明我必须修改我的规范文件,以便 pyinstaller 看到/找到我的图标,如下图所示
它所做的只是将我的图标包含在 dist 目录中,而应用程序仍然没有像上面的第一张图片那样显示它们
然后我通过在控制台 C:\Pyinstaller-2.0>python pyinstaller.py C:\Exmake\16TangoTest.spec 中运行以下命令来制作可执行文件,这使得您在第一张图片中看到的文件夹包含在内,但文件夹,但不是运行时的应用程序
macos - 使用 Mac OS X 应用程序部署 Qt - 如何不加载任何插件?
我想将 Qt 4.x 共享库与我的应用程序一起打包,这样用户就不必安装 Qt 框架。使用构建脚本,我正确修补了所有 Qt 依赖项,并确保/Library/Frameworks
不再从我的 Qt 安装中加载任何依赖项(请参阅我的答案here)。
但是现在我遇到了问题,因为在初始化期间的某个时刻,插件/Developer/Applications/Qt/plugins/bearer/libqcorewlanbearer.dylib
被加载:
该插件引用了全局安装的 Qt 框架,然后我基本上加载了两组 Qt 二进制文件,导致各种麻烦。
现在我的问题是:该插件在哪里加载(找不到任何包含“wlanbearer”的二进制文件)以及如何确保没有插件从我的应用程序中自动加载?
qt - QxtLogger(来自 libQxt)在应用程序输出中打印其消息
我正在使用 QxtLogger(来自 libQxt)来登录我们的应用程序。它在 Qt 4.7.3 上运行良好。
我最近更新到 Qt 4.8,从那时起来自 QxtLogger 的日志消息被打印在应用程序输出中。我没有将它安装为 QtMessageHandler,我无法指出确切的原因。
任何指针或解决方案都会非常有帮助..
qt - 检测 hiDPI 模式
在 OS X 上使用 Qt 4.8.4 -桌面应用程序开发。我需要能够在绘画时检测我是否在 hiDPI 显示器(“视网膜”)上。有谁知道如何实现这一目标?
windows - QT 使用操作系统自动启动应用程序
我仅在 Windows 8 中对此操作有问题。
这是在其他 Windwos OS (Win7/Vista/XP) 中工作的代码
来自 regesty 的值:"C:\Program Files (x86)\Appname\Appname.exe" -m
任何人都可以解释为什么这段代码不起作用?
qt - 在 SLOT 宏中使用 QString 作为参数
是否可以在 SLOT 宏中用作参数 QString ?PS。我的意思是一个简单的解决方案.. 不像 QMetaObject::connectSlotsByName()。
qt - 带有 QT-Objekts 的 Qt 3D 数组,例如 QVector
如何仅使用 Qt-Objects 创建 3D 数组?该数组应该是一个 3D 整数数组。我试图在堆上创建一个标准的 3D 数组。在堆上分配内存工作正常。如果我想释放内存,我得到一个错误。
对于这个项目,我使用 Qt4.8 和 Qt-Creator 2.7.0。我使用 MSVC2010 编译器。
错误消息是:HEAP CORRUPTION DETECTED:在 0x006E3C0 的 Normal 块 (#31715) 之后。CRT 检测到应用程序在堆缓冲区结束后写入内存。
sqlite - 从 QSqlQuery 检索行数,但得到 -1
我正在尝试获取 QSqlQuery 的行数,数据库驱动程序是 qsqlite
这里的查询是一个选择查询,但我仍然得到-1
;
如果我使用model->rowCount()
,我只会得到显示的结果,例如 256,但 select count(*) 返回 120k 结果。
它有什么问题?