crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
iCast
  опции профиля:
сообщение 23.9.2012, 13:07
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте, есть некое диалоговое окно Dialog, в нем инициализируется переменная int k.
В главном окне MainWindow есть переменная int n которой присваивается определенное значение.
Как присвоить значение n = k?
есть некоторый наработки типа создать объект, соответствующий диалоговому окну (mainwindow.cpp):
int n=5;
QDialog dlg;
dlg.k=n;
dlg.exec();


Инициализировать переменную в заголовочном файле диалогового окна dialog.h
int k;

И вывести переменную k уже в dialog.cpp
qDebug()<<" k= "<<k;


но ничего не выходит.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.9.2012, 18:15
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


ну, во-первых, у тебя присвоение обратное от поставленного в начальном условии

dlg.k=n;

Во-вторых, раз такая пьянка, напрашивается решение о внешнем объекте n , который передастся как в экземпляр класса MainWindow , так и в экземпляр класса QDialog
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 24.9.2012, 7:05
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

Спасибо сказали: 30 раз(а)




Репутация:   3  


С диалогами лучше так.

Гдето ранее определить структуру или класс

struct MyDialogSettings
{
    int n;
    ...
};


MyDialog dlg;

MyDialogSettings old_settings;

old_settings.n = 10; // устанавливаем, например, 10

dlg.setSettings( settings ); // устанавливаем значения в поля диалога, например, переменные из главного окна

dlg.exec(); // запускаем

MyDialogSettings new_settings = dlg.settings(); // возвращаем из диалога то, что там ввели


Сообщение отредактировал ssoft - 24.9.2012, 14:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iCast
  опции профиля:
сообщение 24.9.2012, 13:24
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


Алексей1153, да, попутад немного с переменными, когда писал пример:)
ssoft, перменная присваивается в главном окне, и передать ее нужно в диалоговое окно а не наоборот.
____

проблема могла решиться с изменением конструтора диалогового окна, ну так как я не разобрался с этим сделал говнокод:
mainwindow.cpp
.....

Dialog dlg;

......

проблема могла решиться с изменением конструтора диалогового окна, ну так как я не разобрался с этим сделал говнокод:
mainwindow.cpp
.....

Dialog dlg;
int k=1;
 dlg.fun(k);
......

dialog.cpp
....
void Dialog::fun(int n)
{

    qDebug<<n;
}

dialog.h
....
void fun(int);
....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 25.9.2012, 12:35
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2943
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Dialog::Dialog(const int& n): public....
{
   m_n=n;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
iCast
  опции профиля:
сообщение 27.9.2012, 19:50
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 22.9.2012
Пользователь №: 3527

Спасибо сказали: 0 раз(а)




Репутация:   0  


Алексей1153, спасибо :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 4.5.2025, 4:16