尽管连接成功,但未调用插槽
Slot not getting called despite successful connect
我想将一个按钮连接到client::prework()
。经过琐碎的调试,我发现client::prework()
没有被调用(它的任何部分都没有被执行),但QObject::connect
调用返回true
。
client.h
class client : public QObject
{
//some declarations
public slots:
int prework();
};
客户端.cpp
void client::prework()
{
//implementation
}
主窗口.cpp
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QWidget * wdg = new QWidget(this);
QVBoxLayout *vlay = new QVBoxLayout(wdg);
QPushButton *btn1 = new QPushButton("connectme");
vlay->addWidget(btn1);
client obj1;
qDebug()<<"h";
QObject::connect(btn1,SIGNAL(clicked()),&obj1,SLOT(prework()));
// obj1.prework();
}
MainWindow::MainWindow(QWidget *parent) : ...
{
...
client obj1;
...
} // 1
用// 1
标记的线是obj1
被破坏的线。局部变量的寿命不会超过创建它们的范围。(QObject
析构函数确保信号断开。)
如果希望该对象的寿命比构造函数长,则需要使其成为主窗口类的成员。
相关文章:
- QT 插槽未在主线程上调用
- Qt信号和插槽如果从QRunnable或其他线程调用,则不起作用
- Qt插槽调用了两次
- 从插槽调用 QApplication::p rocessEvents 会导致再次调用同一插槽
- 如何使用 signals.boostv2 调用特定插槽
- 通过 id 访问 QML 插槽中的嵌套对象(从 c++ 调用)
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 插槽调用了两次qt
- QListView 的插槽::d ouble点击未被调用
- 类继承自QLabel,为什么不调用自定义插槽?
- 为什么插槽函数即使成功调用也无法插入文本
- 有没有办法调试排队等待对象的Qt插槽调用
- 当对话框中的任何小部件发出信号时,是否可以调用插槽
- 这是在Qt信号和插槽中使用参数调用函数的好方法吗?
- 为什么即使在使用 Qt::D irectConnection 之后,接收器的线程中仍会调用插槽?如何确保在另一个线程中调用它?
- Qt connect(*发送器,*信号,*接收器,*方法)不调用插槽
- 通过直接连接或排队连接调用插槽的QTimer超时插槽之间的区别
- 尽管连接成功,但未调用插槽
- 是否可以在同一线程中并行调用插槽
- 如何在没有连接的情况下调用插槽