Qt父子窗口互换信息

1.创建父子窗体
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDialog * d= new QDialog(this);
    //d->show(); 
    d->exec();
}

MainWindow::~MainWindow()
{
    delete ui;
}
2.创建菜单窗口
要用到.ui菜单文件,创建子菜单,然后进行“转到槽”的操作
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDialog * d= new QDialog(this);
    //d->show();
   // d->exec();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_action456_triggered()
{
    QDialog * d= new QDialog(this);
    d->show();
}
3.父子窗口传递信息
//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    void putText(QString s);



private slots:
    void on_action456_triggered();

    void on_label_linkActivated(const QString &link);

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

//dialog.h
#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
    Q_OBJECT


public:
    explicit MyDialog(QWidget *parent = 0);
    ~MyDialog();
signals:
    void giveText(QString s);
private slots:
        void on_pushButton_clicked();

        void on_lineEdit_cursorPositionChanged(int arg1, int arg2);

private:
    Ui::MyDialog *ui;
};

#endif // MYDIALOG_H

//mainwindow.cpp
#include <QDialog>
#include "mydialog.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDialog * d = new QDialog(this);
    //d->show();
   // d->exec();
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::putText(QString s)
{
    ui->label->setText(s);
}


void MainWindow::on_action456_triggered()
{
    QDialog * d= new MyDialog(this);
    connect(d,&MyDialog::giveText,this,&MainWindow::putText);
    d->show();
}

//dialog.cpp
#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::MyDialog)
{
    ui->setupUi(this);
}

MyDialog::~MyDialog()
{
    delete ui;
}

void MyDialog::on_pushButton_clicked()
{
    QString s = ui->lineEdit->text();
    emit giveText(s);
}

 
  
 
 
 
 

猜你喜欢

转载自blog.csdn.net/laughitoff1014/article/details/71213437