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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QString::arg: Argument missing в QLabel [Решено]  (Прочитано 7414 раз)
iamfomik
Гость
« : Февраль 06, 2009, 15:12 »

Работаю над прорграммкой уже более 2-х месяцев. Давным давно сделал у неё интерфейс. Всё всегда было нормально, а с недавних пор начал получать в консоли следующие сообщения:

Код:
QString::arg: Argument missing: Dialing phone 12 ...,

и им подобное. Это результат после связи слота setText() некой QLabel. Сигнал посылаю так:
Цитировать
emit someSignal(tr("Dialing phone %1 ...").arg(number))
где number - QString с номером телефона (в данном случае 12)

Подобная же проблема возникает и пи явном вызове слота:
Цитировать
QString::arg: Argument missing: Calling number: 12 ,
код:
Код:
ui.label_Number->setText(tr("Calling number: %1 ").arg(phone));

где phone - QString

пробовал сделать так:
Код:
ui.label_Number->setText("dddddddddddddddddd");
результат гениален:
Цитировать
QString::arg: Argument missing: dddddddddddddddddd,

Что-то никак не могу понять что такое странное случилось?


версия QT - 4.4.2 компилятор от MS.
« Последнее редактирование: Февраль 06, 2009, 15:52 от iamfomik » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



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

Первый раз такое вижу. А какая версия Qt?

Вы пробовали дебажить setText(...)?

А можно показать кусок кода (выше проблемной строки)?

Какой текст был установлен в дизайнере для ui.label_Number?
« Последнее редактирование: Февраль 06, 2009, 15:33 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
iamfomik
Гость
« Ответ #2 : Февраль 06, 2009, 15:35 »

код выше строки(много показывать не могу - начальство убьёт):

Код:
ui.label_Status->setText("<p align=\"center\"><span style=\" font-size:14pt; font-weight:600; color:#ecec00;\">DIALING</span></p>");
ui.label_Number->setText(tr("Calling number: %1 ").arg(phone));
и всё в таком духе, ничего суперсложного не делаю.

текст в дизайнере для ui.label_Number
Код:
Calling number: %1
но в конструкторе сразу подставляю пустое значение:
Код:
ui.label_Number->setText(ui.label_Number->text().arg(""));
сделано для более удобной работы над многоязычностью

вот ещё одна строчка проблемная:
Код:
ui.label_Stat->setText(tr("Statistic:\nConnections - %1 Total connection time - %2\nSent - %3 MB  Received - %4 MB").arg(0).arg(0).arg(0.0,0,'f',2).arg(0.0,0,'f',2));
точно такая же ошибка.

пробовал много раз пересобирать проект. Видимо какие-то проблемы с этими лабелами.

Дебажить сетТекст пробовал но неглубоко и не долго.

Как вариант сейчас попробую через mingw собрать и более глубоко подебажить.
Если есть ещё какие предложения, то они мне очень пригодятся.
« Последнее редактирование: Февраль 06, 2009, 15:39 от iamfomik » Записан
iamfomik
Гость
« Ответ #3 : Февраль 06, 2009, 15:51 »

pastor, Спасибо тебе огромное!!!

твоя фраза
Цитировать
Какой текст был установлен в дизайнере для ui.label_Number?
сыграла решающую роль. В дизайнере то всё нормально, но как говориться "оптимизация - корень всего зла"(или как-то так)

В дизайнере я ставлю текст "Calling number %1" для того чтобы в лингвисте меньше переводить было.
В конструкторе формы я параметры заменяю дефолтными значениями - пустотой или нулями, но для большей гибкости делаю это так:
Код:
ui.label_Number->setText(ui.label_Number->text().arg(""));

Сейчас заменил:
Код:
ui.label_Number->setText(tr("Calling number: %1").arg(""));
и всё заработало.

Странно конечно, с чего бы это такая ошибка возникала вообще.....
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Февраль 06, 2009, 18:22 »

Странно конечно, с чего бы это такая ошибка возникала вообще.....

Проблема берет свое начало из этой строки:

Код:
ui.label_Number->setText(ui.label_Number->text().arg(""));

где-то, когда читал про это (про неправильную работу с arg, ссылку найти несмог), но сам не сталкивался. Поэтому я и спросил у тебя места кода где идет работа с ui.label_Number->setText.
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Rcus
Гость
« Ответ #5 : Февраль 06, 2009, 18:36 »

но как говориться "оптимизация - корень всего зла"(или как-то так)
На самом деле фраза Хоара полностью переводится примерно как "Программисты тратят впустую огромное количество времени на размышления или волнения о скорости некритических частей своих программ, и эти попытки добиться эффективности фактически оказывают сильное отрицательное воздействие, если иметь в виду отладку и эксплуатацию. Мы должны забыть о малой эффективности приблизительно в 97% случаев: преждевременная оптимизация – вот корень всего зла".
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Февраль 06, 2009, 18:41 »

преждевременная оптимизация – вот корень всего зла

+100
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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