標籤:qt4 多視窗 訊號槽 應用
應用情境:
主視窗下建立了一個子視窗為其成員,當點擊子視窗內的按鈕時,主視窗接收其訊號並做處理
樣本:
子視窗類:
#ifndef UPDATE_VIEW_H#define UPDATE_VIEW_H#include "ui_update_subwindows.h"#include <QtGui/QMainWindow>class UpdateView : public QMainWindow{ Q_OBJECTprivate: 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);}
Qt 視窗間的訊號傳遞