慎独__ 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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘