Как сохранить Qt::AlignLeft для QLineEdit при уменьшении его размера при сдвиге сплиттера? |
Здравствуйте, гость ( Вход | Регистрация )
Как сохранить Qt::AlignLeft для QLineEdit при уменьшении его размера при сдвиге сплиттера? |
Steklova Olga |
2.11.2011, 16:06
Сообщение
#1
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Здравствуйте! Работаю с Qt 4.7, Firebird 2.1.
У меня есть горизонтальный сплиттер splitter_Horiz, к которому подключены виджеты widget_left и widget_right. Для widget_left установлен GridLayout (в 0-м столбце - Label'ы, в 1-м столбце - LineEdit'ы). Есть DataWidgetMapper, к которому подключены LineEdit'ы. В полях таблицы, установленной для модели, записаны строки до 30 символов или числа. Когда перемещаю сплиттер влево, ширина LineEdit'ов уменьшается и строки полностью уже не помещаются. Но при этом левое выравнивание в LineEdit'ах на глазах превращается в правое, а мне хотелось бы сохранить левое. Подскажите, пожалуйста, как это сделать? |
|
|
Steklova Olga |
11.11.2011, 20:08
Сообщение
#2
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Не подскажете, уважаемый ilyabvt,
в данном случае тоже надо переопределить paintEvent для lineEdit или это не поможет? Правда, я совсем не умею это делать и, видимо, мне придется смириться с текущим состоянием отображения |
|
|
Steklova Olga |
28.12.2011, 14:51
Сообщение
#3
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Может быть, все-таки кто-нибудь знает, как решить эту задачку?
Ведь если строки полностью не помещаются в отведенное для них место, мне кажется, было бы логичнее видеть их первые символы как более важные, а не последние, разве не так? Подскажите, пожалуйста. |
|
|
BlueIceScream |
28.12.2011, 20:36
Сообщение
#4
|
Студент Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: 3 |
На самом деле при изменении размеров QLineEdit думает так:
У меня есть текст. Он имеет определенную длину. С текстом связана позиция курсора. Курсор стоит там где его оставил пользователь. (или где он установился когда вы добавили текст) При уменьшении я буду стараться отображать ту позицию где установлен курсор, раз он там стоит, то значит это отображение приоритетнее для пользователя. Для исправления этого просто после каждого изменения текста устанавливайте курсор на нулевую позицию void QLineEdit::setCursorPosition ( int ) |
|
|
Steklova Olga |
29.12.2011, 11:03
Сообщение
#5
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Да, конечно, BlueIceScream, Вы правы! Вы снова радуете прекрасным, толковым ответом!
С наступающим новым годом, и всего самого доброго Вам и Вашим близким! Остался еще вопрос про QLineEdit. У меня в lineEdit'ах отображаются данные mapper'а, при этом мне надо только отображать данные, редактировать их не надо. Чтобы lineEdit'ы никак не реагировали на нажатия кнопок мыши выполняю следующие действия:
Осталась не обработанной следующая ситуация. Если оператор сделает двойной клик по тексту в одном lineEdit'е, то этот текст будет выделен синим фоном, если затем он сделает двойной клик по тексту в другом lineEdit'е, то этот текст тоже будет выделен синим фоном. А мне надо, чтобы текст не выделялся. Что для этого надо сделать? |
|
|
wiz29 |
29.12.2011, 14:29
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Если оператор сделает двойной клик по тексту в одном lineEdit'е, то этот текст будет выделен синим фоном, если затем он сделает двойной клик по тексту в другом lineEdit'е, то этот текст тоже будет выделен синим фоном. А мне надо, чтобы текст не выделялся. Что для этого надо сделать? Есть несколько путей решения: 1. Долгий - перехватывать и игнорировать определенный набор событий для соответствующего QLineEdit 2. Заменить QLineEdit на QLabel для отображения статических данных |
|
|
Steklova Olga |
29.12.2011, 15:08
Сообщение
#7
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
Цитата Заменить QLineEdit на QLabel для отображения статических данных Если поменять для отображения какого-нибудь параметра mapper'а lineEdit на label, то этот параметр вообще не отобразится. |
|
|
wiz29 |
29.12.2011, 15:18
Сообщение
#8
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
Цитата Заменить QLineEdit на QLabel для отображения статических данных Если поменять для отображения какого-нибудь параметра mapper'а lineEdit на label, то этот параметр вообще не отобразится. Чем отличается отображение одного QWidget от отображения другого QWidget? |
|
|
Steklova Olga |
29.12.2011, 15:33
Сообщение
#9
|
Участник Группа: Участник Сообщений: 198 Регистрация: 27.9.2011 Из: Санкт-Петербург Пользователь №: 2912 Спасибо сказали: 5 раз(а) Репутация: 4 |
У меня есть таблица БД. Создана модель, для которой установлена эта таблица.
Создан mapper, для которого установлена эта модель. Далее у меня было При этом в mapper'e отображались оба поля таблицы.Если написать вот так (как Вы предложили) то первое поле таблицы перестанет отображаться совсем.
Сообщение отредактировал Steklova Olga - 29.12.2011, 16:12 |
|
|
BlueIceScream |
29.12.2011, 15:33
Сообщение
#10
|
Студент Группа: Участник Сообщений: 56 Регистрация: 21.11.2011 Из: Республика Дагестан Пользователь №: 3016 Спасибо сказали: 18 раз(а) Репутация: 3 |
Используйте следующий метод:
Сообщение отредактировал BlueIceScream - 29.12.2011, 15:49 |
|
|
Текстовая версия | Сейчас: 27.11.2024, 4:11 |