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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выделение текста в QInputDialog  (Прочитано 5779 раз)
BagmutA
Гость
« : Февраль 16, 2012, 11:11 »

Можно ли в QInputDialog (в режиме InputDialog::TextInput) после предварительной установки текста
Код
C++ (Qt)
setTextValue ( const QString & text )
выделить какую-либо его часть?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


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


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

Можно. Я не против. http://doc.qt.nokia.com/4.8-snapshot/qobject.html#findChildren
Записан

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

Да, спасибо, к QLineEdit я достучался.
Но с выделением есть проблема:
Код
C++ (Qt)
QInputDialog * inputDialog = new QInputDialog();
inputDialog->setTextValue("");
 
QLineEdit * lineEdit = inputDialog->findChildren<QLineEdit *>()[0];
lineEdit->setText("hello world");
lineEdit->deselect();
lineEdit->setSelection( 0, 3 );
 
qDebug() << "selectedText=" << lineEdit->selectedText();
 
inputDialog->exec();

qDebug() выводит "hel", а вот в самом lineEdit остается выделеным весь текст.
Записан
BagmutA
Гость
« Ответ #3 : Февраль 16, 2012, 13:01 »

Возможно это баг.
Вот у человека аналогичная проблема:
http://developer.qt.nokia.com/forums/viewthread/11829
Записан
magog
Гость
« Ответ #4 : Февраль 16, 2012, 16:51 »

сделай свой инпут дайлог кастомный. Кода не особо больше получается
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Февраль 16, 2012, 17:00 »

сделай свой инпут дайлог кастомный. Кода не особо больше получается
проблема не в диалоге, а в QLineEdit.
Записан

Qt 5.11/4.8.7 (X11/Win)
magog
Гость
« Ответ #6 : Февраль 17, 2012, 11:09 »

сделай свой инпут дайлог кастомный. Кода не особо больше получается
проблема не в диалоге, а в QLineEdit.

Тоесть это проблема не только в инпут диалого, а вообще везде?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Февраль 17, 2012, 15:59 »

Дело в самом QInputDialog:

Код
C++ (Qt)
void QInputDialog::setVisible(bool visible)
{
   Q_D(const QInputDialog);
   if (visible) {
       d->ensureLayout();
       d->inputWidget->setFocus();
       if (d->inputWidget == d->lineEdit) {
           d->lineEdit->selectAll();
       } else if (d->inputWidget == d->intSpinBox) {
           d->intSpinBox->selectAll();
       } else if (d->inputWidget == d->doubleSpinBox) {
           d->doubleSpinBox->selectAll();
       }
   }
   QDialog::setVisible(visible);
}
 

 Наследуйся от него и переопредели setVisible(bool).
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #8 : Февраль 17, 2012, 16:07 »

а нельзя переопределить showEvent()? или он вызывается перед setVisible(true)?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Февраль 17, 2012, 16:12 »

а нельзя переопределить showEvent()? или он вызывается перед setVisible(true)?
showEvent() вызывается после QWidget::setVisible(true). А вот что переопределять разницы нет.
Записан

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


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