Переменные |
Здравствуйте, гость ( Вход | Регистрация )
Переменные |
Dimix |
14.1.2011, 6:43
Сообщение
#1
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Создал GUI приложение Qt с названием login
Создал Класс формы Qt Desinger с названием in В login есть переменные типа QString Пытаюсь присвоить данные полученные в QString форме in Но QString у меня почемуто ничего не содержит Debug показывает что QString данные получает а когда пытается передать он очищается. Как решить эту проблемку? |
|
|
Dimix |
14.1.2011, 14:58
Сообщение
#2
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Смотреть getUserData();
Раскрывающийся текст #include "loginwin.h" #include "ui_loginwin.h" #include "passwordwin.h" #include "ui_passwordwin.h" #include "create.h" #include "ui_create.h" loginWin::loginWin(QWidget *parent) : QDialog(parent), ui(new Ui::loginWin) { ui->setupUi(this); loadUser(); warningError="Ошибка"; criticalError="Критическая ошибка"; userErrorConnection="Ошибка осуществления соединения с пользовательской базой данных"; userNotFiledb="Ошибка файл пользовательской базы данных не найден"; mainErrorConnection="Ошибка осуществления соединения с главной базой данных"; mainNotFiledb="Ошибка файл главной базы данных не найден"; getUserData(); } loginWin::~loginWin() { delete ui; } void loginWin::getUserData() { QFile file; if(file.exists("bin\\"+ui->cboAccount->itemText(ui->cboAccount->currentIndex()))){ if(file.exists("profile\\account")){ QSqlDatabase maindb = QSqlDatabase::addDatabase("QSQLITE"); maindb.setHostName("localhost"); maindb.setDatabaseName("profile\\account"); if(!maindb.open("user", "password")){ maindb.lastError().text(); QSqlDatabase::removeDatabase("QSQLITE"); QMessageBox::warning(this, warningError, mainErrorConnection); }else{ QSqlQueryModel model; model.setQuery("SELECT * FROM user WHERE name = '"+ui->cboAccount->itemText(ui->cboAccount->currentIndex())+"';"); for(int i = 0; i < model.rowCount(); ++i){ userCurrency=model.record(i).value("currency").toString(); userName=model.record(i).value("name").toString(); userPassword=model.record(i).value("password").toString(); userPass=model.record(i).value("pass").toString(); userPin=model.record(i).value("pin").toString(); userSound=model.record(i).value("sound").toString(); } model.clear(); maindb.close(); QSqlDatabase::removeDatabase("QSQLITE"); }; }else{ QMessageBox::critical(this, criticalError, mainNotFiledb); }; }else{ QMessageBox::critical(this, criticalError, userNotFiledb); }; } void loginWin::on_cboAccount_currentIndexChanged(QString ) { getUserData(); } void loginWin::on_buttonLogin_clicked() { if(ui->cboAccount->currentIndex()==0){ QMessageBox::warning(this, warningError, tr("Вы не выбрали учетную запись")); }else{ PasswordWin* paq = new PasswordWin; paq->show(); close(); }; } Раскрывающийся текст #include "passwordwin.h" #include "ui_passwordwin.h" #include "loginwin.h" #include "ui_loginwin.h" PasswordWin::PasswordWin(QWidget *parent) : QDialog(parent), ui(new Ui::PasswordWin) { ui->setupUi(this); loginWin* log = new loginWin; ui->labelMore->setText(tr("<b><center>Для доступа к учетной записи")+log->userName+tr("</center></b>"));//возникшая проблема здесь } |
|
|
silver47 |
14.1.2011, 18:20
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Тяжело понять. SQLite не поддерживает пароли и её содержимое не составит труда прочитать. Что нужно передать из одного класса в другой? Вы пытаетесь сделать окно логина?
Я проверяю наличие базы данных так:
А окно логина в первой своей программе делал по здешнему совету как-то так: main.cpp
Сообщение отредактировал silver47 - 14.1.2011, 18:31 |
|
|
Dimix |
14.1.2011, 18:44
Сообщение
#4
|
Студент Группа: Участник Сообщений: 74 Регистрация: 24.11.2010 Пользователь №: 2215 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я раньше писал программы все одним полотном и несталкивался с подобной проблеммой так как мог получить все что понадобится. Но проблемма в том что когда настало время модернизировать ранне созданные проэкты это оказалось весьма непросто так как код имеет более чем 5000 строк я подумал что это неудобно.
Начал куралесить создавая каждое окно отдельными файлами и вот столкнулся с проблеммой что при попытке обращения к переменной вызовом ее в другом файле она оказывается пустой. Пример создал файл Базы данных заполнил его именами загрузил список имен в combobox и при выборе имени у меня выполняется получение данных для текущего имени его пароль и т.п. нажимаю кнопочку Вход появляется другое окно и говорит введите пароль ввожу пароль и сравниваю его с полученным при выборе имя паролем но проверка не проходит так как переменная хранящяя пароль на этот момент пустая. |
|
|
Текстовая версия | Сейчас: 18.9.2024, 16:09 |