Hello everyone, first of all I just start learning Qt.
I have MainWindow class defined in "mainwindow.h" and "mainwindow.cpp" files.
The "Dialog" and "Dialog_2" classes are friend classes of that MainWindow class.
An object of "MainWindow" class is parent of "Dialog" and "Dialog_2" type objects.
But I cannot access the members of MainWindow from both of that friend classes.
From the function "void Dialog_2::add_new_person()", I am trying to access the data_map member of parent object, but I cannot do that.
The code is:
"mainwindow.h"
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
{
friend class Dialog;
friend class Dialog_2;
Q_OBJECT
.......
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
friend class Dialog;
friend class Dialog_2;
Q_OBJECT
.......
}
To copy to clipboard, switch view to plain text mode
"mainwindow.cpp"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"
#include "dialog_2.h"
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
.....
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog.h"
#include "dialog_2.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
.....
To copy to clipboard, switch view to plain text mode
"dialog_2.h"
#ifndef DIALOG_2_H
#define DIALOG_2_H
#include <QDialog>
class MainWindow;
namespace Ui {
class Dialog_2;
}
{
Q_OBJECT
public:
explicit Dialog_2
(QWidget *parent
= 0);
~Dialog_2();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Dialog_2 *ui;
void add_new_person();
};
#endif // DIALOG_2_H
#ifndef DIALOG_2_H
#define DIALOG_2_H
#include <QDialog>
class MainWindow;
namespace Ui {
class Dialog_2;
}
class Dialog_2 : public QDialog
{
Q_OBJECT
public:
explicit Dialog_2(QWidget *parent = 0);
~Dialog_2();
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Dialog_2 *ui;
void add_new_person();
};
#endif // DIALOG_2_H
To copy to clipboard, switch view to plain text mode
"dialog_2.cpp"
#include "dialog_2.h"
#include "ui_dialog_2.h"
#include <QMessageBox>
#include <QDebug>
#include "mainwindow.h"
Dialog_2
::Dialog_2(QWidget *parent
) : ui(new Ui::Dialog_2)
{
ui->setupUi(this);
}
Dialog_2::~Dialog_2()
{
delete ui;
}
void Dialog_2::on_pushButton_clicked()
{
add_new_person();
close();
}
void Dialog_2::on_pushButton_2_clicked()
{
close();
}
void Dialog_2::add_new_person()
{
QString new_name
= ui
->lineEdit_1
->text
();
QString new_number
= ui
->lineEdit_2
->text
();
this->parent()->data_map.insert(new_name, new_number);
QMessageBox::information(this,
"Added!", new_name
+ " has added successfully!");
}
#include "dialog_2.h"
#include "ui_dialog_2.h"
#include <QMessageBox>
#include <QDebug>
#include "mainwindow.h"
Dialog_2::Dialog_2(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog_2)
{
ui->setupUi(this);
}
Dialog_2::~Dialog_2()
{
delete ui;
}
void Dialog_2::on_pushButton_clicked()
{
add_new_person();
close();
}
void Dialog_2::on_pushButton_2_clicked()
{
close();
}
void Dialog_2::add_new_person()
{
QString new_name = ui->lineEdit_1->text();
QString new_number = ui->lineEdit_2->text();
this->parent()->data_map.insert(new_name, new_number);
QMessageBox::information(this, "Added!", new_name + " has added successfully!");
}
To copy to clipboard, switch view to plain text mode
It's same for dialog.h class, so I didnot add the code.
Thanks for your help
Bookmarks