Qt信号与槽传递QList动态数组

155 篇文章 26 订阅

Qt信号与槽传递QList动态数组

根据实验,测试程序见下:

- QStringQList动态数组能够通过signal-slot机制进行传递;

- 自定义结构的QList动态数组也能通过signal-slot机制进行传递

//"mainwindow.h"

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include <QMainWindow>

#include<QDebug>

#include <QList>

#include "anotherobject.h"

 

class MainWindow : public QMainWindow

{

    Q_OBJECT

public:

    MainWindow(QWidget *parent = 0);

    ~MainWindow();

    struct data_group{

        QString str1;

        QString str2;

        int num;

    };

signals:

    void emitData2Slot(QString str);

    void emitListData2Slot(QList<QString> list);

        void emitBiListData2Slot(QList<data_group> list);

 

 

public slots:

    void recvData(QString str);

    void recvListData(QList<QString> list);

    void recvbiListData(QList<data_group> list);

 

 

};

 

#endif // MAINWINDOW_H

 

//"mainwindow.cpp"

#include "mainwindow.h"

 

MainWindow::MainWindow(QWidget *parent)

    : QMainWindow(parent)

{

    QString str("hello sxy !");

    connect(this,SIGNAL(emitData2Slot(QString)),this,SLOT(recvData(QString)));

  //  emit emitData2Slot(str);

    QList<QString>list;

    list.append("fist");

    list.append("second");

    list.append("third");

    connect(this,SIGNAL(emitListData2Slot(QList<QString>)),this,SLOT(recvListData(QList<QString>)));

    emit emitListData2Slot(list);

 

    struct data_group data={"string1","string2",5};

    struct data_group data2={"string2_1","string2_2",5};

 

    QList<data_group> list_data_group;

    list_data_group.append(data);

    list_data_group.append(data2);

 

  //  connect(this,SIGNAL(emitBiListData2Slot(QList<data_group>)),this,SLOT(recvbiListData(QList<data_group>)));

    AnotherObject* testobj=new AnotherObject(this);

    connect(this,SIGNAL(emitBiListData2Slot(QList<data_group>)),testobj,SLOT(recvbiListData(QList<data_group>)));

    emit emitBiListData2Slot(list_data_group);

}

 

MainWindow::~MainWindow()

{

 

}

 

void MainWindow::recvData(QString str){

    qDebug()<<"recvData:"<<str;

}

 

void MainWindow::recvListData(QList<QString> list){

    qDebug()<<"recvListData:"<<"list.size:"<<list.size();

}

 

void MainWindow::recvbiListData(QList<data_group> list){

    qDebug()<<"recvbiListData:"<<"list.size:"<<list.size();

    qDebug()<<"list[0].num:"<<list[0].num;

}

 

//"anotherobject.h"

#ifndef ANOTHEROBJECT_H

#define ANOTHEROBJECT_H

 

#include <QObject>

#include <QList>

#include<QDebug>

 

class AnotherObject: public QObject

{

    Q_OBJECT

public:

    explicit AnotherObject( QObject *parent = 0);

    ~AnotherObject();

    struct data_group{

        QString str1;

        QString str2;

        int num;

    };

public slots:

    void recvbiListData(QList<data_group> list);

 

};

 

#endif // ANOTHEROBJECT_H

 

//"anotherobject.cpp"

#include "anotherobject.h"

 

AnotherObject::AnotherObject( QObject *parent): QObject(parent)

{

 

}

 

AnotherObject::~AnotherObject(){

 

}

 

void AnotherObject::recvbiListData(QList<data_group> list){

    qDebug()<<"AnotherObject-recvbiListData:";

    qDebug()<<list.size();

    qDebug()<<"list[0].num:"<<list[1].str2;

}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值