我試圖在我Qtableview的 Qt 中隱藏密碼。我試過了 :
QTableView view;
View.setItemDelegateForColumn(8,());
還 :
ui->tableView->setColumnhidden(8,true);
我知道這是不對的,正是我試圖隱藏/隱藏第 8 列的內容。
uj5u.com熱心網友回復:
您可以將密碼存盤在專案資料中。像這樣的東西:
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來存盤密碼是否顯示,好像是免費的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511662.html
