Russian Qt Forum
Ноябрь 24, 2024, 17:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidget и Password  (Прочитано 5325 раз)
Григорий
Гость
« : Апрель 11, 2012, 09:02 »

Уважаемые форумчане, вопрос таков есть виджет QTableWidget с n количеством колонок, как сделать так чтобы одна из колонок отображалась в стиле Password(т.е текст в ячейке маскировался звездочками)...
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Апрель 11, 2012, 09:11 »

Использовать свой делегат.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Григорий
Гость
« Ответ #2 : Апрель 11, 2012, 10:56 »

Использовать свой делегат.

а можете кратенький пример на setItemDelegateForColumn для моего случая с Password
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 11, 2012, 11:16 »

а можете кратенький пример на setItemDelegateForColumn для моего случая с Password
Теория.
+
QLineEdit::setEchoMode( QLineEdit::Password )
Записан

Qt 5.11/4.8.7 (X11/Win)
Григорий
Гость
« Ответ #4 : Апрель 11, 2012, 11:59 »

Теория.
+
QLineEdit::setEchoMode( QLineEdit::Password )

Извиняюсь за тугодумие но помогите плиз , делаю так сначала вешаю делегат для колонки

Код:
Table->setItemDelegateForColumn(5,new PassDelegate());

далее описываю делегат

Код:
class PassDelegate : public QItemDelegate {
 public:
  void paint(QPainter* p,const QStyleOptionViewItem& o,const QModelIndex& i) const {}
};

а что в методе paint писать и куда там QLineEdit::setEchoMode( QLineEdit::Password ) крутить не пойму ((
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Апрель 11, 2012, 12:06 »

Упс, с QLineEdit::setEchoMode() я похоже погорячился - просмотрел, что ввод пароля не требуется.
Тебе достаточно будет перегрузить
Код
C++ (Qt)
QString QStyledItemDelegate::displayText ( const QVariant & value, const QLocale & locale ) const
в котором value.toString() поменять на '*'-ки.
Кстати, про сушествование QItemDelegate забудь и всегда используй QStyledItemDelegate.
« Последнее редактирование: Апрель 11, 2012, 12:08 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Григорий
Гость
« Ответ #6 : Апрель 11, 2012, 14:55 »

Упс, с QLineEdit::setEchoMode() я похоже погорячился - просмотрел, что ввод пароля не требуется.

Ну кажись разобрался, спасибо большое,

А если все таки нужно чтобы и в стандартном редакторе итема тоже ставились звездочки при вводе , что надо еще добавить?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Апрель 11, 2012, 15:00 »

А если все таки нужно чтобы и в стандартном редакторе итема тоже ставились звездочки при вводе , что надо еще добавить?

Код
C++ (Qt)
QWidget* PassDelegate::createEditor( QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index ) const
{
    QLineEdit* le = new QLineEdit( parent );
    le->setEchoMode( QLineEdit::Password );
    return le;
}
Записан

Qt 5.11/4.8.7 (X11/Win)
Григорий
Гость
« Ответ #8 : Апрель 11, 2012, 15:09 »

Все вопрос закрыт, всем огромное спасибо ))
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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