安全性:如何在 Qt App 中通过密码 show/hide、QGroupBox
Security: How to show/hide, by password, QGroupBox in Qt App
我正在尝试准备我的 Qt 应用程序(在 C++ 中)以供不同的用户配置文件使用:root 用户 和 普通用户,所以我想在普通用户模式下隐藏特定的根选项(受限QGroupBox),然后当root用户需要时他可以输入它的密码(在安全菜单选项中,我已经编码)以显示它们。这可能在同一个 GUI 中吗?我真的被这个安全实现困住了...
那么,当我之前提到的安全菜单选项中键入 user/password 时,我如何编写一个仅由 root 用户 显示的隐藏 QGroupBox?如何实现?
在 Qt 中是否有特定的程序可以做到这一点或在其他情况下有任何想法?
非常感谢!
最后更新:
我已经使用了@The Badger 的建议,并得到了一个完全符合我要求的版本。
有几个选项:
每次在小部件 drawn/shown 之前,检查用户拥有的访问权限级别以及显示或隐藏控件的具体情况:
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);
发出后,小部件将变得可见。
我正在尝试准备我的 Qt 应用程序(在 C++ 中)以供不同的用户配置文件使用:root 用户 和 普通用户,所以我想在普通用户模式下隐藏特定的根选项(受限QGroupBox),然后当root用户需要时他可以输入它的密码(在安全菜单选项中,我已经编码)以显示它们。这可能在同一个 GUI 中吗?我真的被这个安全实现困住了...
那么,当我之前提到的安全菜单选项中键入 user/password 时,我如何编写一个仅由 root 用户 显示的隐藏 QGroupBox?如何实现?
在 Qt 中是否有特定的程序可以做到这一点或在其他情况下有任何想法?
非常感谢!
最后更新: 我已经使用了@The Badger 的建议,并得到了一个完全符合我要求的版本。
有几个选项:
每次在小部件 drawn/shown 之前,检查用户拥有的访问权限级别以及显示或隐藏控件的具体情况:
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);
发出后,小部件将变得可见。