ニーズ:
構造の必要性、データは2つの要素を必要とするため、
彼らは資源、貧しい人々スケーラビリティの無駄であるか多くの構造アレイとわからないので、ベクターに構造を配置する必要があり、
必要性は、このベクターから渡しませんマスタサブウィンドウクラスフォームクラスに送信されます。
達成見て
、サブウインドウのヘッダファイルを:
#ifndefのSPRAYER_WIDGET_H
の#define SPRAYER_WIDGET_H
の#include
する#include
する#include <fcntl.h>
の#include
QmetaTypeを含める//必要性
settings_eye_struct2構造体
{
quint8 whichgun;
quint8 whicheye;
};
クラスsprayer_Widget:QWidgetのパブリック
{
Q_OBJECTの
シグナル:
ボイドdecode_eyeset_to_screen(QVector <settings_eye_struct2>);
}
CPPをサブウィンドウ:
の#include "sprayer_widget.h"
/ 構造体は直接、シグナリングすることができません宣言 /
Q_DECLARE_METATYPE(settings_eye_struct2)
settings_eye_struct2 settings_eye_data2;
QVector <settings_eye_struct2> qv_eye_data2;
/ 行数を省略 /
空隙sprayer_Widget :: on_BTN_hot_gun_clicked()
{
qRegisterMetaType<QVector<settings_eye_struct2>>();
for(int i=1;i<=8;i++)
{
settings_eye_data2.whichgun=i;
settings_eye_data2.whicheye=i+1;
qv_eye_data2.push_back(settings_eye_data2);
}
emit decode_eyeset_to_screen(qv_eye_data2);
}
メインウィンドウのヘッダファイル:
#ifndefのMAIN_CONTROL_WIDGET_H
の#define MAIN_CONTROL_WIDGET_H
#include「sprayer_widget.h」
クラスmain_control_Widget:公共QWidgetの
{
Q_OBJECT
公共スロット:
ボイドtest_debug(QVector <settings_eye_struct2>)。
}
//这里省略一大段
}。
#endifの// MAIN_CONTROL_WIDGET_H
主窗口CPP:
の#include「main_control_widget.h」
の#include「ui_main_control_widget.h」
Q_DECLARE_METATYPE(settings_eye_struct2)
settings_eye_struct2 settings_eye_data3。
QVector <settings_eye_struct2> qv_eye_data3。
main_control_Widget :: main_control_Widget(QWidgetの*親):
はQWidget(親)、
UI(新しいUI :: main_control_Widget)
{
接続(スプレー、SIGNAL(decode_eyeset_to_screen(QVector <settings_eye_struct2>))、この、SLOT(test_debug(QVector <settings_eye_struct2>) ));
}
空main_control_Widget :: test_debug(QVector <settings_eye_struct2> vec_tmp)
{
for(int i = 0;i<vec_tmp.size();i++)
{
qDebug() << "whicheye=:"<<vec_tmp.at(i).whicheye;
qDebug() << "whichgun=:"<<vec_tmp.at(i).whichgun;
}
}
テストの実行:
概要:
上記単純な実験である:シグナルとスロットを渡す方法の方法により得られたベクター。
ベクターはQVARIANTパッケージコンテナを通過しなければならないいくつかのブログは、それがこれは必須ではない判明ご紹介します。