问题标签 [qtcore]
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.
qt - QObject 没有属性“显示”
我在 Qt 4 Designer 中设计了一个 GUI,然后使用pyuic4将其编译为 Python 代码。
以下是编译的结果代码:
但是当我尝试使用以下命令执行它时:
我收到以下错误消息,不明白为什么:
c++ - QTimer 在单独的方法中启动时崩溃
我一直在尝试创建一个程序来模拟神经元的基本功能以供我自己娱乐,并且我需要在一段时间内递减一个整数,所以我决定使用 QTimer。
我的问题是,当我的程序到达方法“changeVoltage”时,启动计时器的行,程序立即崩溃。
当程序启动时,伏特的值为-40,按下“激发”按钮将电压增加10,通过触发值为10的changeVoltage使其变为-30。理论上,它不应被识别为高于50,不再处于基线(如果是这种情况,则将结束计时器并减少电压),但高于-40,这应该启动计时器(导致计时器将电压缓慢降低 1)。但是计时器似乎甚至没有启动,因为当它到达那条线时,整个程序崩溃了。
该文件如下:
我已经调试并尝试了几个小时,但无法弄清楚为什么 QTimer 没有启动。连接后不能在线路外激活吗?还有其他方法可以实现我想要实现的目标吗?
c++ - QString 和 OpenCV cv.namedWindow()
使用 OpenCV 2.4.2 的 Qt 4.8.1 C++ 控制台应用程序正在通过highgui模块读取和显示 USB 网络摄像头图像。它使用该函数创建一个用于显示图像的窗口(我认为在内部使用 Qt)
但是,我错过了如何将字符串转换为不会以不可读/加扰/垃圾字符结尾的格式。这是我尝试过的:
如何将 QString 转换为函数正确显示的内容?
qt - 带参数的 Qt Meta System Call 构造函数
我知道我可以用它QMetaType
来创建一个没有参数的对象。
另一种可能的选择是使用QMetaObject
和调用newInstance
. 但我需要QMetaObject
从一些东西中得到。
我尝试使用QMetaType::metaObjectForType
,但它总是返回空指针(但QMetaType
能够创建对象)。
更新:
我认为问题是为什么metaObjectForType
对我不起作用。该类在qRegisterMetaType
,中注册Q_DECLARE_METATYPE
并被Q_OBJECT
应用。
c++ - QThread::msleep() 冻结程序
QLabel
当用户保存他们的游戏时,我试图在其中一个上创建一个褪色效果。
所以,我认为使用 aQThread
非常适合这项工作,但唯一的问题是QThread::msleep();
冻结程序。
我以前多次使用这种技术来减慢循环速度,但现在它只是决定冻结我的程序,直到循环结束。
有人对这里发生的事情有任何想法吗?
我删除了所有不相关的东西,因为这个程序很大。
保存.h
保存的.cpp
主窗口.h
主文件
c++ - 循环中的 QtCore.QObject.connect 仅影响最后一个实例
我有一个循环。我创建了一个QCheckBox
并将它放在一个QTableWidget
单元格中,一切都很好。在循环的每个步骤中,我connect
为 myslot SLOT 调用了一个函数,但只QCheckBox
应用了最后一个实例。我google了很多,发现很多人都有我的问题。我已经应用了他们的解决方案,但我的问题仍然存在。
注意:我的connect
函数 return True
。
如何connect
在枚举所有的循环中创建函数instances
?
multithreading - QApplication 线程因为另一个 QThread 而冻结
在我的 Qt 应用程序中,我创建了一个QThread
应该定期执行一些繁重的计算任务。主QApplication
线程应该维护一个 GUI(不包括在示例中)并执行一些定期更新。两个线程都有自己的计时器来启用定期 update() 调用。
问题:当工作线程的计算工作量超过某个临界值时,我的主线程停止接收定时器事件。
示例代码如下。主线程调用 update() 时输出“Main”,工作线程调用“Worker”。如果您运行它,您会看到定期打印“Worker”,并且“Main”恰好出现两次(开始时出现一次,大约 5 秒后出现一次)。如果是功能齐全的 GUI 应用程序,这实际上意味着 GUI 完全冻结。
一些观察。
- 通过对内部循环设置 100 个限制(而不是 1000 个)来减少工作量将解决问题(两个 update() 方法都将被定期调用)。
- 将工作线程计时器信号的连接类型设置为 Qt::DirectConnection 将解决该问题。
因此,正如您所看到的,我对此有几个解决方法,但如果有人向我解释原始代码有什么问题,我将不胜感激。我希望线程独立执行它们的事件循环。我知道我通过长时间的 update() 操作阻塞了工作线程事件循环,但是为什么它会影响主线程呢?
PS 是的,我知道QConcurrent
替代方案。但我只是想了解一下。
测试.cpp
测试.h
UPD:我从受人尊敬的成员那里得到了一些答案(请阅读下面的内容)。现在我想澄清一下是什么错误的想法特别破坏了我的代码。
如您所见,该计划有两个线程,每个线程都定期运行一些 update() 过程。我的错误是认为 update() 只是一些过程,它是一个slot。一个特定对象的槽,它有自己的线程亲和性,这意味着它的主体将在该线程中执行(除非使用 Qt::DirectConnection 调度信号)。现在,看来我已经用计时器做得很好了——它们中的每一个都属于不同的线程——但是用 update() 把事情搞砸了。所以我最终在主线程中执行了两个 update() 过程。显然在某些时候事件循环会被定时器事件淹没,并且永远不会完成迭代。
至于解决办法。如果你读过“你做错了”(你确实应该),你就会知道将所有逻辑实现在一个不是 QThread 子类但单独创建并使用 moveToThread 附加到 QThread 的对象中是相当方便的( )。如果您记住您的对象仅控制线程但不属于它,我个人认为从 QThread 子类化没有任何问题。所以它不是你想在那个线程中执行的代码的地方。
c++ - How can I update the value of QHash for a specific key?
I am using QHash
in C++ to store some simple key and value pairs. In my case the key is an integer, so is the value. To add a new key/value pair to the hash, this is my syntax:
How can I update an existing key-value par? What is the syntax?
c++ - Q_UNUSED 有副作用吗?
给定以下代码:
如果Q_UNUSED
我在某些情况下(如上面的示例中)实际使用“var”变量,宏是否会有任何影响,或者当我禁止未使用变量的编译器警告时它根本没有影响?
到目前为止,我观察到它没有效果,但我想确定一下。
qt - QFiles 错误的 Qt C++ 向量
我有以下内容:
给我以下错误:
error: 'QFile::QFile(const QFile&)' is private
。
如果我使用 QList 而不是 std::vector,我会得到同样的错误。
感谢您的关注。