我想将按钮连接到client::prework()
。经过简单的调试后,我发现client::prework()
没有被调用(没有执行任何部分),但QObject::connect
调用返回true
。
client.h
class client : public QObject
{
//some declarations
public slots:
int prework();
};
client.cpp
void client::prework()
{
//implementation
}
mainwindow.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();
}
答案 0 :(得分:0)
MainWindow::MainWindow(QWidget *parent) : ...
{
...
client obj1;
...
} // 1
标有// 1
的行是obj1
被销毁的行。局部变量不会超出创建它们的范围。 (QObject
destructor确保信号断开。)
如果你希望它比构造函数更长,你需要使该对象成为主窗口类的成员。