Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: qt реализация первого проекта. Последовательные окна  (Прочитано 2595 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Шинш

  • Автор темы
  • Гость
Нужно сделать окно входа(сделал), далее проверка логин/пароль(сегодня объяснили уже как с файла брать (тут ж :) ), далее различный интерфейс от того кто вошел.

Можно как то реализовать все раздельно? Точнее как это сделать?

Просто если написать интерфейсы и с главной ф-и вызывать потом и показывать на экран последовательно, все ж сразу отрисуется сперва, ток то что после входа будет невидимым, а в этом нужды нету, и не эффективно :(

Можно как то сделать, чтобы отдельно как отдельная прога вход. Затем в зависимости от значений опять ж как отдельная прога получается запускается требуемые ф-и?


Ох чувствую фигово я объяснил... :(

Оффлайн vasiliyVV

  • Новичок
  • *
  • Сообщений: 47
    • Просмотр профиля
Что за ЯП хоть то?
Я делаю так. Создаю окно с логином и паролем. По событию проверяю валидность и заношу значения переменной user_id в память.
Далее удаляю обекты окна, задаю новый размер окна и инициализирую класс. В классе, в самом начале, сравниваю user_id и для разных типов id отрисвываю нужные элементы. Если элементов много, то храню ссылки на их создание в БД. Так меньше кодить получается. Если мало то тупо создаю все элементы и нужным задаю видимость. Памяти они много не жрут и при отрисовки не отображаются.

Оффлайн Progger

  • Любитель
  • *
  • Сообщений: 95
    • Просмотр профиля
Для окна ввода логина и пароля надо использовать модальный диалог (Наследник QDialog). Получается что-то типа:
int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  LoginDialog loginDialog;
  if (!LoginDialog.exec()) return 0;
  MainWindow mainWindow;
  mainWindow.show();
  return app.exec();
}
Из LoginDialog можно возвращать пользователя и инициализировать главное окно соответствующим образом, или даже создавать разные окна:
if (loginDialog.user() == "superuser")
{
  SuperMainWindow mainWindow;
  mainWindow.show();
}
else
{
  OtherMainWindow mainWindow(loginDialog.user());
  mainWindow.show();
}
return app.exec();

Шинш

  • Автор темы
  • Гость
Progger,
спасибо))) 2ю часть понял где про пользователя, про начало чуть не понял...
класс LoginDialog в конструкторе должен создавать виджет, получать введенное значение и сверять из файла как представляю. Затем забивать в LoginDialog.user значение. Но про LoginDialog.exec() не понял(( что это? при каком случае и вообще что возвращает ЭТО ?

Оффлайн Progger

  • Любитель
  • *
  • Сообщений: 95
    • Просмотр профиля
http://doc.crossplatform.ru/qt/4.7.x/qdialog.html
exec() - Показывает диалог в модальном режиме и ждёт закрытия
Внутри диалога если авторизация удалась вызываем accept(), диалог закрывается и exec() возвращает 1. Если пользователь отказался вызываем rejected(), соответственно exec() возвращает 0

Шинш

  • Автор темы
  • Гость
Progger,
огромное СПАСИБО :) прям сильно помог :) уже ночь, перед сном заглянул, завтра вечером (учеба до 7 вечера + на вторник готовить лабы) попробую реализовать :)

 

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