crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Сокращатель срок
RazrFalcon
  опции профиля:
сообщение 11.8.2011, 1:33
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Пример (сжатие до 30):
было:
Цитата
Нажмите сюда для управления опросом в этой теме

стало:
Цитата
Нажмите сюда дл...сом в этой теме

То есть всего 30-ь символов не считая "...".
Есть ли готовая функция? Нужно именно в средине.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.8.2011, 7:25
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


пропарсить твой вопрос было нелегко. Но вот, что получилось в результате )))

void CutStringIfTooLong(const int maxlen,QString& LongString)
{
    const QString dots="...";
    
    if(dots.length()<=maxlen)
    {
        //взять из начала строки столько символов
        const int LenBeg=(maxlen-dots.length())/2;
        //взять из конца строки столько символов
        const int LenEnd=maxlen-LenBeg-dots.length();
        
        if(LenBeg)
        {
            int toDel=LongString.length()-(LenBeg+LenEnd);
            if(toDel>0)
            {
                LongString.remove(LenBeg-1,toDel);
                LongString.insert(LenBeg,dots);
            }
        }
        
    }

    //это нужно для того, чтобы всегда обеспечить заданную длину
    if(LongString.length()>maxlen)
    {
        LongString.resize(maxlen);
    }
}


вызываем
 QString LongString="it's toooooooooooooo looooooong string";
CutStringIfTooLong(20,LongString);
//LongString=="it's too...ng string";


Сообщение отредактировал Алексей1153 - 11.8.2011, 7:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.8.2011, 9:00
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Угу. Это я и имел ввиду.
Про то, чтобы впихнуть разделением строки точки - я думал уже. Просто думал что есть нативная Qt функция.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 12.8.2011, 14:58
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


QFontMetrics::elidedText
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.4.2024, 10:58