Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 2
1

Обращение к переменным класса

06.12.2015, 17:14. Показов 1791. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
dialog.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef DIALOG_H
#define DIALOG_H
 
#include <QDialog>
 
#include "mainwindow.h"
 
namespace Ui {
class Dialog;
}
 
class Dialog : public QDialog
{
    Q_OBJECT
 
public:
    explicit Dialog(QWidget *parent = 0);
    ~Dialog();
 
private:
    Ui::Dialog *ui;
};
 
#endif // DIALOG_H


mainwindow.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#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();
    
    int x1;
 
private:
    Ui::MainWindow *ui;
};
 
#endif // MAINWINDOW_H


dialog.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "dialog.h"
#include "ui_dialog.h"
 
Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
{
    ui->setupUi(this);
    
    
    
}
 
Dialog::~Dialog()
{
    delete ui;
}


mainwindow.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
}


main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}


Вопрос такой... в main.cpp создается экземпляр класса MainWindow - w. В MainWindow находится public переменная x1. Как из dialog.cpp получить доступ к этой переменной?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2015, 17:14
Ответы с готовыми решениями:

Экземпляры класса. Обращение к методам и переменным класса
Добрый день. В одном из классов создан список JSON записей QJSONArray А так же вектор из целых...

Как получить доступ к переменным одного класса из методов другого
Есть класс MainWindow с переменными в pablic, и кьютешный QGraphicsView. Нужно вот тут void...

Обращение к переменным одного метода из другого внутри класса
Доброго времени суток. Поставлена задача написать программу реализующую матрицу и поостые...

Обращение к переменным this
Всем доброго времени суток. Я изучаю php , но изучаю его сразу по готовому коду. Плскажите вот...

3
683 / 458 / 160
Регистрация: 01.10.2015
Сообщений: 1,264
06.12.2015, 17:38 2
А для чего вам необходим доступ к данным MainWindow из Dialog?

Кстати, данные (это я про int x1) должны объявляться в private-секции класса, а вот методы, реализующие доступ к ним - в public. Инкапсуляцию никто не отменял...
1
0 / 0 / 0
Регистрация: 06.12.2015
Сообщений: 2
06.12.2015, 18:07  [ТС] 3
0x90h, Переменных будет 20+, для каждого делать методы слишком долго.

Добавлено через 11 минут
Цитата Сообщение от 0x90h Посмотреть сообщение
А для чего вам необходим доступ к данным MainWindow из Dialog?
Будет много переменных , доступ к которому должен быть из всех других классов форм.

Добавлено через 11 минут
Цитата Сообщение от 0x90h Посмотреть сообщение
Кстати, данные (это я про int x1) должны объявляться в private-секции класса, а вот методы, реализующие доступ к ним - в public. Инкапсуляцию никто не отменял...
А как обратиться к методу? Я создал в mainwindow.h метод void test, но его тоже не видно из Dialog
0
683 / 458 / 160
Регистрация: 01.10.2015
Сообщений: 1,264
06.12.2015, 18:13 4
Цитата Сообщение от Chack Посмотреть сообщение
Переменных будет 20+
Chack, даже если их будет 1000 и больше, смысл инкапсуляции не в этом, данные-члены класса доступны в любом из методов этого класса напрямую, а помещая данные в private-секцию класса, вы просто запрещаете неконтролируемый доступ к данным извне класса, а взамен предоставляете интерфейс для контролируемого доступа в публичной части, т.е. методы-геттеры и методы-сеттеры.

Цитата Сообщение от Chack Посмотреть сообщение
Будет много переменных , доступ к которому должен быть из всех других классов форм.
Смысл диалога - прервать выполнение программы с целью привлечь внимание пользователя, осуществить вывод информации или запросить дополнительные данные/инструкции от пользователя, раз уж вы используете потомков от QDialog - вызывайте их через exec(), анализируйте возвращаемое методом значение, в зависимости от результатов анализа или получаете из диалога данные (предусмотрев для этого в классе диалога публичный метод, возвращающий данные, и вызвав его), или игнорируете их. А поскольку все это осуществляется в методах MainWindow, то вы можете оттуда напрямую обращаться к его приватным данным.
1
06.12.2015, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.12.2015, 18:13
Помогаю со студенческими работами здесь

Обращение к переменным
Пытаюсь разобраться в visual studio 2010. Возникла проблема связи между 2 формами. В программе...

Обращение к переменным из xaml
Заранее прошу прощения за дилетантский вопрос, но я только начинаю изучать Xamarin и xaml, так что...

Обращение к именам переменным
Добрый день. Подскажите, если способ обращения к переменным, имея имена переменных в строковом...

Инициализация и обращение к переменным
Доброго времени. Возникли некоторые вопросы связанные с порядком инициализации. Ниже привожу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru