- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我是 Qt 的新手。我对现有的 Qt 应用程序做了一些简单的修改,但我还没有从头开始创建任何应用程序。
一般来说,我对 C++ 的某些方面(类继承等)也没有太多经验。
我创建了一个新的基于 Code::Blocks Qt4 的项目并稍微修改了模板。我添加了两个文件。
目前该项目包含三个文件:main.cpp、app.h 和 app.cpp。
这是main.cpp的内容:
#include <QTimer>
#include "app.h"
int main(int argc, char* argv[]) {
TestApp app(argc, argv);
QTimer::singleShot(1000, &app, SLOT(timeout()));
return app.exec();
}
这是 app.h 的样子:
#ifndef APP_H_INCLUDED
#define APP_H_INCLUDED
#include <QApplication>
class TestApp: public QApplication {
public:
TestApp(int &argc, char **argv);
public slots:
void timeout();
};
#endif
这是app.cpp:
#include "app.h"
#include <QDebug>
TestApp::TestApp(int &argc, char **argv): QApplication(argc, argv) {
}
void TestApp::timeout() {
qDebug() << "timeout called";
}
我希望程序在启动后一秒打印“timeout called”。不幸的是,这不起作用。当 QTimer::singleShot()
被调用时,控制台显示:
Object::connect: No such slot QApplication::timeout() in [path to the main.cpp file]
Object::connect: (receiver name: 'QtTests')
我不知道该如何处理。提前谢谢你。
最佳答案
您只是在 TestApp 类中缺少 Q_OBJECT
宏:
class TestApp: public QApplication {
Q_OBJECT
public:
...
这对于整个信号/插槽基础结构的工作是必要的(并且从具有此宏的类派生是不够的)。
(确保在更改之后进行完整、干净的构建 - 如果您不使用 qmake
或其他 Qt 感知构建系统,则需要运行 moc
自己。)
有关引用,请参阅 QObject
文档:
Notice that the Q_OBJECT macro is mandatory for any object that implements signals, slots or properties. You also need to run the Meta Object Compiler on the source file. We strongly recommend the use of this macro in all subclasses of QObject regardless of whether or not they actually use signals, slots and properties, since failure to do so may lead certain functions to exhibit strange behavior.
关于c++ - QTimer::singleShot() 在给定对象的父类中查找指定的槽,而不是对象本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544665/
我有以下 PySide 应用程序,其预期功能是每 5 秒更新一次 number_button 的文本,一旦 start_button 从 0 计数到 9已被按下。 import sys from Py
我的问题如下:我有 QPushbutton* 调用这个 void Reflex::buttonClicked(){ QObject* senderObject = sender(); QPushBut
// Example class class A : public QObject { Q_OBJECT void fun() { Timer::SingleShot(10,
在一些 Qt 示例中,我看到他们使用QTimer::singleShot(0, this , SLOT(funcA())),为什么不直接调用槽funcA?使用 QMetaMethod::invoke
我的应用场景: 从串口读取连续数据(实时)并显示在 PyQt GUI 上,并将数据存储在 csv 文件中。 我尝试使用While循环。 <-- 由于调用阻塞而不起作用。 所以,二手我尝试过QtCore
这个问题在这里已经有了答案: How delete and deleteLater works with regards to signals and slots in Qt? (4 个答案) 关闭
我是 Qt 的新手。我对现有的 Qt 应用程序做了一些简单的修改,但我还没有从头开始创建任何应用程序。 一般来说,我对 C++ 的某些方面(类继承等)也没有太多经验。 我创建了一个新的基于 Code:
将 Mode.Sample 和 Mode.SingleShot 与 measurementIterations 设置为较大数字有什么区别?两种模式实际上是相同的还是存在一些数量上的差异? 最佳答案 但
我有一个问题。我正在运行一个 PyQt5 表单,它运行一个名为 Task() 的工作程序(我不会详细介绍其代码,但它基本上只是将一个值返回到 QLabel code>) 在 QThread 中,如下所
我创建了一个键事件,如果我按下“A”键,它将执行函数 A()。 在 A() 函数中,我将全局参数“g”递增 1 并创建一个 QTimer::singleShot 等待 2 秒并打印“g”的值。例如,“
我正在开发一个复杂且评论不佳的基于 Qt 的 Python 应用程序。它使用 PySide.QtCore.QTimer.singleShot(int,slot) 计时器来延迟线程内插槽的执行,我对这个
Windows 窗体中的 Qt 库是否有类似于以下静态函数的类比? http://doc.qt.io/qt-5/qtimer.html#singleShot 我能想到的最好的是: ThreadPool
我有一个 QTimer 触发周期性事件。 我不想直接停止计时器,因为我想将一些特殊信号同步到最后一个事件。 我可以通过在这个 QTimer 上设置 setSingleShot(true) 来实现这一点
注意:我的原始帖子有一个重要的遗漏:我遗漏了我已经在 main 的开头实例化了主 QApplication 实例。创建两个 QApplication 实例是导致问题的原因。使用相同的 QApplica
我的本地文件夹中有数百个 .html 页面,我想将它们转换为 .php。 有没有什么办法可以一次做到这一点,而不是用“.php”替换每个“.html” 最佳答案 在 Windows 中,您可以启动
Qt 具有使用 Lambda 执行定时操作的巧妙功能。 一个 Action 可以在延迟后用一行代码完成: QTimer::singleShot(10, [=](){ // do
我尝试实现的类有问题。基本上,我想在构建类并将其连接到其中一个类插槽时启动单次计时器。目前我的构造函数看起来像这样: myclass::myclass(int time) { QTimer::
我已经看到了两种不同的方式来启动 Qt 控制台应用程序,即在事件循环启动时调用类方法。 This way一旦事件循环开始,将要调用的方法排队,this way运行一个 singleShot 计时器,该
我是学习 Qt 的初学者,并试图理解提供的 Qt example用于下载操作。在 downloadmanager.cpp ,成员函数如下: void DownloadManager::append(c
虽然可以使用定时器和 Qt 的信号槽机制从场景中自动删除 QGraphicsTextItem,例如 QTimer::singleShot(1000, QGraphicsTextItem*, SLOT(
我是一名优秀的程序员,十分优秀!