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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: кавычки в QLabel  (Прочитано 7587 раз)
mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« : Май 17, 2016, 13:47 »

получаю текст из таблицы базы данных, типа: фирма "Мелодия". qDebug() выводит, что в результате query.value(1).toString() из базы получается: "фирма "Мелодия"". Теперь эту строку надо показать на форме. Так вот в QLineEdit все отображается, как в таблице базы, без внешних кавычек, а в Qlabel кавычки остаются и выводит: "фирма "Мелодия
Можно ли это как-то обойти без разбора строки и удаления 1-последнего символа?
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Май 17, 2016, 16:03 »

Покажите как текст в Qlabel и QLineEdit выводите
Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #2 : Май 17, 2016, 16:27 »

Код:
QSqlQuery qry("SELECT contractor.nam FROM contractor");
if(qry.first())
{
            ui->EFirm->setText(qry.value(0).toString()); //это QLineEdit
            ui->lFirm->setText(qry.value(0).toString()); //а это Qlabel
}
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Май 17, 2016, 16:46 »

Странно, у меня в минимальном примере и там, и там с кавычками. Qt 4.8 и 5.3
Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #4 : Май 17, 2016, 17:00 »

не совсем корректный пример. Из базы строка получается с не-экранированными кавычками: "фирма "Мелодия"". Их ведь в базу никто со слэшами вносить не будет. Версию Qt сегодня уже не скажу-рабочий день закончился ;-)
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Май 17, 2016, 19:45 »

Вполне корректный, т.к. экранирование кавычек нужно только для оформления литерала строки. В самой строке кавычки будут обычными, без слешей.

Покажите лучше что в qry.value(0).toString() находится Улыбающийся
Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #6 : Май 18, 2016, 08:08 »

qDebug() выводит, что в результате query.value(0).toString() из базы получается: "фирма "Мелодия"" . Внутренние кавычки не экранированы. Реально юзер, разумеется, вводил: фирма "Мелодия"
Кстати, Qt 4.6.3
И, сейчас попробовал вывести не из базы, а из QString aaa="фирма \"Мелодия\""; Вывело-
« Последнее редактирование: Май 18, 2016, 08:20 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Май 18, 2016, 08:43 »

Базу можете приложить? Это sqlite?
Или минимальный проект, чтобы можно было у себя его запустить
Пока, сказать точно в чем фигня не получится
« Последнее редактирование: Май 18, 2016, 08:47 от gil9red » Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #8 : Май 18, 2016, 10:46 »

это MyQSL, проект довольно не маленький. Чуть будет время, переделаю на SQLite и выложу
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Май 18, 2016, 11:26 »

Попробуйте в той функции залогировать строку из базы и тексты из label и textedit:

Код
C++ (Qt)
QSqlQuery qry("SELECT contractor.nam FROM contractor");
if(qry.first())
{
   const QString& text = qry.value(0).toString();
   ui->EFirm->setText(text); //это QLineEdit
   ui->lFirm->setText(text); //а это Qlabel
 
   qDebug() << text;
   qDebug() << ui->EFirm->text();
   qDebug() << ui->lFirm->text();
}
 
Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #10 : Май 18, 2016, 11:48 »

выяснил, в чем причина. Если в QLabel выравнивание по левому краю (по умолчанию)-все отображается нормально. Если по правому (я во вложении так и сделал)-рисует лишние кавычки. Это что за баг?
P.S. а qDebug() в обоих случаях дает: "фирма "Мелодия""
« Последнее редактирование: Май 18, 2016, 11:53 от mokynis » Записан

QT4, Qt5, Qt6 Debian, ArchLinux
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #11 : Май 18, 2016, 12:07 »

Попробуйте собрать версией по свежее Улыбающийся
Записан

mokynis
Самовар
**
Offline Offline

Сообщений: 176


Просмотр профиля
« Ответ #12 : Май 18, 2016, 12:18 »

ОК, спасибо за помощь!
Записан

QT4, Qt5, Qt6 Debian, ArchLinux
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #13 : Май 18, 2016, 13:51 »

P.S. а qDebug() в обоих случаях дает: "фирма "Мелодия""

qDebug() в Qt4 выводит строки с дополнительным обрамлением в кавычки
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #14 : Май 18, 2016, 14:16 »

P.S. а qDebug() в обоих случаях дает: "фирма "Мелодия""

qDebug() в Qt4 выводит строки с дополнительным обрамлением в кавычки

Тут другое. У автора при выводе в QLabel при align=right кавычки появились Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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