Russian Qt Forum

Qt => Вопросы новичков => Тема начата: mokynis от Май 17, 2016, 13:47



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


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 17, 2016, 16:03
Покажите как текст в Qlabel и QLineEdit выводите


Название: Re: кавычки в QLabel
Отправлено: mokynis от Май 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
}


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 17, 2016, 16:46
Странно, у меня в минимальном примере и там, и там с кавычками. Qt 4.8 и 5.3


Название: Re: кавычки в QLabel
Отправлено: mokynis от Май 17, 2016, 17:00
не совсем корректный пример. Из базы строка получается с не-экранированными кавычками: "фирма "Мелодия"". Их ведь в базу никто со слэшами вносить не будет. Версию Qt сегодня уже не скажу-рабочий день закончился ;-)


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 17, 2016, 19:45
Вполне корректный, т.к. экранирование кавычек нужно только для оформления литерала строки. В самой строке кавычки будут обычными, без слешей.

Покажите лучше что в qry.value(0).toString() находится :)


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


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 18, 2016, 08:43
Базу можете приложить? Это sqlite?
Или минимальный проект, чтобы можно было у себя его запустить
Пока, сказать точно в чем фигня не получится


Название: Re: кавычки в QLabel
Отправлено: mokynis от Май 18, 2016, 10:46
это MyQSL, проект довольно не маленький. Чуть будет время, переделаю на SQLite и выложу


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 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();
}
 


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


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 18, 2016, 12:07
Попробуйте собрать версией по свежее :)


Название: Re: кавычки в QLabel
Отправлено: mokynis от Май 18, 2016, 12:18
ОК, спасибо за помощь!


Название: Re: кавычки в QLabel
Отправлено: Alex Custov от Май 18, 2016, 13:51
P.S. а qDebug() в обоих случаях дает: "фирма "Мелодия""

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


Название: Re: кавычки в QLabel
Отправлено: gil9red от Май 18, 2016, 14:16
P.S. а qDebug() в обоих случаях дает: "фирма "Мелодия""

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

Тут другое. У автора при выводе в QLabel при align=right кавычки появились :)