我有2个从 QDialog 继承的小部件。其中一个小部件被另一个小部件调用。
我需要将数据从父窗口小部件传递给子窗口。例如,我要传递QStringList。
我可以在这两个类中制作信号和插槽。父小部件类的插槽-transferList(QStringList)-填充我的QStringList。
如何连接信号和插槽?子控件当然对父控件一无所知。
// .h-file of parent widget.
class ElectricIndicationDialog : public QDialog {
#include "PollIndication.h" // class of child widget
QSharedPointer <PollIndication> pollInd;
public slots:
void transferList(QStringList);
signals:
void listTfansfer(QStringList);
private:
QStringList sendList;
};
// .cpp-file of parent widget
pollInd = QSharedPointer <PollIndication>(new PollIndication());
pollInd->show();
void ConfIndication::transferList(QStringList lst) {
lst.append("str1");
lst.append("str2");
}
// .h-file of child widget
class PollIndication : public QDialog {
public slots:
void getList(QStringList);
signals:
void listGet(QStringList);
private:
QStringList recList; // We transfer data to it
}
答案 0 :(得分:0)
您不需要一个信号/插槽:您的父母知道孩子的类型并在上面有一个指针。因此,当您需要将数据发送到对话框时,可以调用PollIndication方法。
void ConfIndication::transferList(QStringList lst) {
lst.append("str1");
lst.append("str2");
pollInd->changeTransferList(lst);
}
如果对话框是模式对话框,则也可以仅在需要时创建对话框,并将列表作为构造函数的参数。
void ConfIndication::transferList(QStringList lst) {
lst.append("str1");
lst.append("str2");
PollIndication* pollInd = new PollIndication(lst, this);
pollInd->exec();
}
答案 1 :(得分:0)
让一个家长班知道他们的孩子通常是一个坏主意。
您可以在父类中定义一个抽象方法(考虑一些纯虚拟方法),因此每个子类都必须实现该方法...之后,父类可以调用该方法,并且子类将根据以下信息实现登录它必须如何反应...