QtCreator创建多窗体后,如何在父子窗体之间传递参数!

2024年11月29日 19:39
有1个网友回答
网友(1):

网上都有很多例子来说这个问题的, 但是他们举的例子只适合动态创建子窗体的; 一般网上人说的例子都是用QtCreator创建一个主窗体,然后在主窗体中用代码生成的子窗体, 这时候你直接在实例化子窗体时就可以直接把父窗体的指针传递给了子窗体, 这当然是容易的。 当然还是用SIGNAL/SLOT机制了, 但这里需要选择合适的地方来用CONNECT函数来连接信号与槽函数。 这个方法, 我已经测试成功了; 而且效率相当不错的。下面我只是简单地说一下思路吧。 1. 创建子窗体时, 不要像主窗体创建时那样把参数 (QWidget parent = 0),写成这样的话, 你自己找麻烦; 2. 如果你在子窗体里发送信号, 那么你要设置自己的信号函数, 同时在父窗体中设置相应的槽函数。 子窗体: 定义发射的信号 class subclass : public QDialog{Q_OBJECTpublic:private:signals: void emit_your_signals(paramters);};父窗体: 定义接收信号的槽 class parent : public QWidget{Q_OBJECTpublic slots: void accept_your_signals(parameters);};然后在子窗体实体化时进行链接: ui-setupUI(){connect(subwindowpointer, signal, parentwindowpointer, slot);}即可以了以上都是简化写法, 突出信号与槽位置与关系; 剩下的就很简单了, 在你的 子窗体实例化时