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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Странное поведение QTreeWidget  (Прочитано 3071 раз)
once_again_abc
Гость
« : Апрель 18, 2012, 08:55 »

создаю QTreeWidget.
добавляю к нему QLineEdit, к которому, в свою очередь, привязан QIntValidator. Сам QLineEdit связан с моим слотом через сигнал editingFinished
Проблема в том, я 1) почему-то могу ввести значение меньше нижней границы указанной в QIntValidator, хотя верхний ограничитель работает; 2) при ввобде любого значения меньше нижней границы - мой слот не вызывается.

Код:
    
     QTreeWidget* pTree = new QTreeWidget( this );

    QTreeWidgetItem* pItem = new QTreeWidgetItem( pTree );
    sprintf( text, (%d - %d):", MIN, MAX );
    pItem->setText( 0, text );

    sprintf( text, "%d", MIN);
    QLineEdit* pEdit = new QLineEdit( text, pTree );
    pEdit->setAutoFillBackground( true );
    pValidator = new QIntValidator( MIN, MAX, pTree );
    pEdit->setValidator( pValidator );

    connect( pEdit, SIGNAL(editingFinished()), this, SLOT(myTextChanged()) );
    pTree->setItemWidget( pItem, 1, pEdit );


ПС. версия 4.7.3
« Последнее редактирование: Апрель 18, 2012, 09:31 от once_again_abc » Записан
Bepec
Гость
« Ответ #1 : Апрель 18, 2012, 09:01 »

Валидатор то хоть вызывается?

PS лучше было бы, если б ты б выложил бы минимально бы компилируемый бы пример.
Записан
once_again_abc
Гость
« Ответ #2 : Апрель 18, 2012, 09:30 »

Валидатор то хоть вызывается?

PS лучше было бы, если б ты б выложил бы минимально бы компилируемый бы пример.

валидатор вызывается, т.к. фильтр на верхнюю границу работает.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Допустим MIN = 10, пользователь начинает вводить и (пока) ввел только 1. Это еще не валидный ввод, поэтому editingFinished и нет. Но запрещать его нельзя, иначе как ввести 10? См QValidator::fixup
Записан
once_again_abc
Гость
« Ответ #4 : Апрель 18, 2012, 11:22 »

Допустим MIN = 10, пользователь начинает вводить и (пока) ввел только 1. Это еще не валидный ввод, поэтому editingFinished и нет. Но запрещать его нельзя, иначе как ввести 10? См QValidator::fixup

т.е. наследник QIntValidator с переопределением fixup-а? а основную логику QValidator-а это не нраушит? завтра попробую, спасибо за идею!
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



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

А почему бы не воспользоваться уже готовым QSpinBox и не городить огород?
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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