Я пытаюсь подготовить свое приложение Qt (на C ++) для использования различными профилями пользователей: пользователь root а также обычный пользователь, поэтому я хочу скрыть определенные корневые параметры (ограниченный QGroupBox) в обычный пользователь режим, а затем, когда это необходимо пользователь root он мог ввести его пароль (в пункте меню безопасности, который я уже кодировал), чтобы показать их. Это возможно в том же графическом интерфейсе? Я действительно застрял с этой реализацией безопасности …
Итак, как я могу кодировать скрытый QGroupBox, который будет показан только пользователь root когда его пользователь / пароль вводится в пункте меню безопасности, о котором я упоминал ранее? Как это реализовать?
Есть ли в Qt специальная процедура для этого или какая-либо идея в другом случае?
Большое спасибо!
Последнее обновление:
Я использовал предложения @The Badger и у меня есть первая версия, которая работает примерно так, как я хотел.
Есть несколько вариантов:
Каждый раз перед тем, как виджет рисуется / показывается, проверяйте, какой уровень доступа имеет пользователь, и в зависимости от того, отображают или скрывают элементы управления:
void MyWidget::showEvent(QShowEvent * event) {
if(d_admin == true) {
ui->myAdminEdit->setVisible(true);
} else {
ui->myAdminEdit->setVisible(false);
}
/* Or one line */
ui->myAdminButton->setVisible(d_admin);
}
Или вы подключаете сигнал, чтобы показать все виджеты администратора в зависимости от статуса:
/* In some constructor */
ui->myAdminEdit->setVisible(false);
ui->myAdminButton->setVisible(false);
connect(autClass, SIGNAL(adminLoggedIn(bool)), ui->myAdminEdit, SLOT(setVisible(bool)));
connect(autClass, SIGNAL(adminLoggedIn(bool)), ui->myAdminButton, SLOT(setVisible(bool)));
/* And then after authentication */
isAdmin = authenticate(username, password);
emit adminLoggedIn(isAdmin);
После выброса виджеты станут видимыми.
Других решений пока нет …