应用场景:
主窗口下创建了一个子窗口为其成员,当点击子窗口内的按钮时,主窗口接收其信号并做处理
示例:
子窗口类:
#ifndef UPDATE_VIEW_H
#define UPDATE_VIEW_H
#include "ui_update_subwindows.h"
#include <QtGui/QMainWindow>
class UpdateView : public QMainWindow{
Q_OBJECT
private:
Ui_update::Update_MainWindow ui;
public:
UpdateView(QWidget* parent = 0,Qt::WFlags flags = 0);
~UpdateView();
signals:
void up_select_update_file(QPushButton *);
private slots:
void emit_select_button();
};
#endif //
#include "UpdateView.h"
UpdateView::UpdateView(QWidget* parent,Qt::WFlags flags) : QMainWindow(parent,flags)
{
ui.setupUi(this);
connect(ui.pushButton,SIGNAL(clicked()),this,SLOT(emit_select_button()));
}
UpdateView :: ~UpdateView()
{
}
void UpdateView::emit_select_button()
{
emit up_select_update_file(ui.pushButton);
}
主窗口信号槽
void export_da::update_da()
{
update_view = new UpdateView(this);
connect(update_view,SIGNAL(up_select_update_file(QPushButton*)),this,SLOT(select_update_file(QPushButton*)));
update_view->show();
}
这里的update_view 即使我的子窗口,而其发送的信号函数up_select_update_file里的参数是QPushButton* 类型,实现的是,我想将子窗口的按钮传递给主窗口,采用主窗口的内容去set这个按钮。
void export_da::select_update_file(QPushButton* update_file)
{
update_file_name = QFileDialog::getOpenFileName(this,tr("Save File"),".",tr("TEXT files (.txt)"));
update_file->setText(update_file_name);
}
原文地址:http://blog.csdn.net/bbinchina/article/details/44976449