Russian Qt Forum
Ноябрь 25, 2024, 17:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема передачи данных из одного класса в другой  (Прочитано 4435 раз)
kaw
Гость
« : Март 12, 2009, 12:42 »

Из первого класа являющимся диалогом вызываю другой диалог
посылая данные в переменную, но переменная остаеться пустой  Непонимающий
Код:
void SchetWin::on_pushButton_2_clicked()
{
int sel=listWidget->currentRow();
if (sel > -1)
{
SchetEdit *schetEdit = new SchetEdit(0);
schetEdit->setModal(true);
schetEdit->setWindowTitle(tr("Редактирование счета"));
schetEdit->show();
schetEdit->comboBox->setVisible(false);
schetEdit->label_2->setVisible(false);
schetEdit->name = listWidget->item(sel)->text();
}
}
класс другой
Код:
#include "schetedit.h"

// place your code here
SchetEdit::SchetEdit(QWidget *parent):QDialog(parent)
{
setupUi(this);
shows();
}

void SchetEdit::shows()
{
if (name > "")
{
QString sql ="SELECT sh_id,sh_name,defaults FROM schet WHERE sh_name='"+name+"'";
query.exec(sql);
query.next();
lineEdit->setText(query.value(1).toString());
checkBox->setChecked(query.value(2).toBool());
id = query.value(0).toString();
}
}

поможите плиз
Записан
Rcus
Гость
« Ответ #1 : Март 12, 2009, 12:50 »

/*sigh && cry*/
метод shows() вызывается из конструктора до установки name, может быть проще будет передавать его параметром конструктора. Инкапсуляция это не просто красивое слово, но еще и довольно интересная вещь, рекомендую.
Записан
kaw
Гость
« Ответ #2 : Март 12, 2009, 13:14 »

может быть проще будет передавать его параметром конструктора.
интересно, а по подробнее. Не просто же так я в разделе для новичков  Смеющийся
Цитировать
Инкапсуляция это не просто красивое слово, но еще и довольно интересная вещь, рекомендую.
Это не красивое слово, а страшное ругательство  Смеющийся Смеющийся Смеющийся
Записан
kaw
Гость
« Ответ #3 : Март 12, 2009, 13:23 »

да я еще пробывал данную переменую в первом класе прописать и как бы брать ее значения, но опять же она оказывалась пустой  Злой
Записан
Rcus
Гость
« Ответ #4 : Март 12, 2009, 15:47 »

я бы побольше переделал будь это мой код, но и так должно работать
Код
C++ (Qt)
void SchetWin::on_pushButton_2_clicked()
{
int sel=listWidget->currentRow();
if (sel < 0 )
return;
SchetEdit *schetEdit = new SchetEdit(listWidget->item(sel)->text(), 0);
schetEdit->setModal(true);
schetEdit->setWindowTitle(tr("Редактирование счета"));
schetEdit->show();
schetEdit->comboBox->setVisible(false);
schetEdit->label_2->setVisible(false);
}
/*--------*/
#include "schetedit.h"
 
// place your code here
SchetEdit::SchetEdit(const QString &invoiceName, QWidget *parent):QDialog(parent)
{
setupUi(this);
shows(invoiceName);
}
 
void SchetEdit::shows(const QString &invoiceName)
{
if (invoiceName.isEmpty())
return;
query.prepare("SELECT sh_id,sh_name,defaults FROM schet WHERE sh_name=:name");
query.bindValue(":name", invoiceName);
if (!query.first())
return;
lineEdit->setText(query.value(1).toString());
checkBox->setChecked(query.value(2).toBool());
id = query.value(0).toString();
}
 
 
Записан
kaw
Гость
« Ответ #5 : Март 12, 2009, 18:44 »

спасибо за пример! Щас попробуем!
« Последнее редактирование: Март 12, 2009, 18:48 от kaw » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Март 12, 2009, 23:10 »

>>Инкапсуляция это не просто красивое слово, но еще и довольно интересная вещь, рекомендую.
А в багланде это не принято, там все объекты из класса поумолчанию видны Улыбающийся
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.158 секунд. Запросов: 23.