慎独__ 2019-12-10 23:18 采纳率: 50%
浏览 1953

QT5信号槽绑定成功后,为什么槽函数没有执行?求解

我是在list类中做了一个界面,并绑定类槽函数;然后加到类mainwindow中,但是槽函数没有执行,但是connect返回值true说明已经办定成功了啊?为什么没有执行呢?槽函数我也声明了,初学者求拍醒啊。。。
我贴上源码吧!

// 这是类list的:
//----------------------------list.h
#ifndef LIST_H
#define LIST_H
#include
#include
#include
#include

#include
#include

class list : public QWidget
{
Q_OBJECT
public:

list();
QStringListModel *ml;
QListView        *vl;
QPushButton      *btn_insert;
QPushButton      *btn_remove;
QWidget          *qw;
QWidget          *addUI();
QLineEdit        *line;

public slots:
void l_insert();

};

#endif // LIST_H

//----------------------------list.cpp
list::list()
{
ml=new QStringListModel;
vl=new QListView;
btn_insert=new QPushButton("插入");
btn_remove=new QPushButton("删除");
qw=new QWidget;
line=new QLineEdit("insert:");

bool a=connect(btn_insert,SIGNAL(clicked()),this,SLOT(l_insert()));
qDebug()<<a<<endl;
}

QWidget * list::addUI(){

 QStringList str;
 str<<"通道1"<<"通道2";
ml->setStringList(str);
vl->setModel(ml);

QHBoxLayout *h1=new QHBoxLayout;
QFormLayout *f1=new QFormLayout;
h1->addWidget(btn_insert);
h1->addWidget(btn_remove);
f1->addRow(vl);
f1->addRow(line);
f1->addRow(h1);
qw->setLayout(f1);
return qw;

};

void list::l_insert(){
qDebug()<<"@@@@@";
QString str=line->text();
qDebug()<<"str"< int row=vl->currentIndex().row();
QModelIndex index=ml->index(row);

ml->setData(index,str);
vl->setCurrentIndex(index);
vl->edit(index);

};

mainwindow.cpp // 只是调用此界面

tab=new QTabWidget;
QWidget *w1=new QWidget;
list l1;
w1=l1.addUI();

tab->addTab(w1,"QList");
setCentralWidget(tab);

  • 写回答

1条回答 默认 最新

  • clz2012 2019-12-11 11:10
    关注

    mainwindow 构造函数里list l1 这个是是栈上分配的对象,出了构造函数就被释放了, 虽然list对象里构造出来的按钮还存在,
    但是绑定的槽函数的对象已经不存在了, 你把list用new的方式创建。 另外你这个编码很多地方都不符合正常写法,list里的控件
    构造的时候不设置parent,放到成员里的意义是什么。

    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用