我正在尝试在Qt中隐藏我的Qtableview中的密码。我试过:
Qtableview
QTableView view; View.setItemDelegateForColumn(8,());
另请注意:
ui->tableView->setColumnhidden(8,true);
我知道这是不对的,这正是我试图隐藏/遮盖第8栏的内容。
tktrz96b1#
您可以将密码存储在项目数据中。大概是这样的:
QString getPassword(QTableWidgetItem *itm) { return itm->data(Qt::UserRole).toString(); } void hidePassword(QTableWidgetItem *itm) { QString password = getPassword(itm); password = password.fill('*', password.length()); itm->setText(password); itm->setData(Qt::AccessibleTextRole, false); } void showPassword(QTableWidgetItem *itm) { QString password = getPassword(itm); itm->setText(password); itm->setData(Qt::AccessibleTextRole, true); } void setPassword(QTableWidgetItem *itm, const QString &password) { itm->setData(Qt::UserRole, password); if (itm->data(Qt::AccessibleTextRole) == true) { showPassword(itm); } else { hidePassword(itm); } } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QTableWidgetItem *itm = new QTableWidgetItem(); itm->setFlags(Qt::NoItemFlags); ui->tableWidget->setItem(0, 0, itm); setPassword(itm, "test"); connect(ui->tableWidget, &QTableWidget::itemClicked, this, [itm](QTableWidgetItem *clickedItm){ if (clickedItm == itm) { if (itm->data(Qt::AccessibleTextRole) == true) { hidePassword(itm); } else { showPassword(itm); } } }); }
我还使用了Qt::AccessibleTextRole来存储密码是否显示,它似乎是免费的
1条答案
按热度按时间tktrz96b1#
您可以将密码存储在项目数据中。大概是这样的:
我还使用了Qt::AccessibleTextRole来存储密码是否显示,它似乎是免费的