Qt 自定義資料型別在訊號和槽中的傳遞

2021-10-14 11:02:19 字數 977 閱讀 3478

qt 訊號和槽函式引數只能是基於 qt 的基礎型別的,比如 qstring、int、bool 等,如果想傳遞自定義型別預設情況下是行不通的。

下面以結構體為例,實現結構體型別資料的傳遞

標頭檔案:

#ifndef mainwindow_h

#define mainwindow_h

#include #include#includenamespace ui

class mainwindow : public qmainwindow

mystruct;

private slots:

void on_testbtn_clicked();

signals:

void adddocitemsignalnew(mystruct variant);

private slots:

void adddocitemnew(mystruct variant);

};#endif // mainwindow_h

cpp檔案

#include "mainwindow.h"

#include "ui_mainwindow.h"

mainwindow::mainwindow(qwidget *parent) :

qmainwindow(parent),

ui(new ui::mainwindow)

mainwindow::~mainwindow()

void mainwindow::on_testbtn_clicked()

void mainwindow::adddocitemnew(mystruct variant)

{ qdebug()《與傳統的int等型別相比,只增加了

qregistermetatype("mystruct");

這樣包裝後,我們就可以使用 qt 的訊號和槽功能來傳遞自定義資料結構了。

Qt自定義訊號槽

qt自定義訊號槽,在控制台程式中實現 qt5 如下 qt5 include news h class news public qobject void send signals void new const qstring name private qstring m name reader.h i...

Qt 自定義訊號槽

使用 connect 可以讓我們連線系統提供的訊號和槽。但是,qt 的訊號槽機制並不僅僅是使用系統提供的那部分,還會允許我們自己設計自己的訊號和槽。這也是 qt 框架的設計思路之一,用於我們設計解耦的程式。本節將講解如何在自己的程式中自定義訊號槽。訊號槽不是 gui 模組提供的,而是 qt 核心特性...

在QT的訊號和槽中使用自定義型別

qt的訊號和槽機制由於實現的年代比較久遠,所以採用的是 預編譯而不是更時髦的模板技術來實現。但實際使用起來還是挺方便的。也能夠很好地用於跨執行緒的通訊場景,比如後台執行緒取到資料後通知ui執行緒顯示。最近遇到乙個有趣的問題 我們在乙個訊號中用了自定義型別,之前使用完全沒有問題。後來我們改到非ui執行...