crossplatform.ru

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

> выделение виджетов и групповое редактированием
Гость_trupac_*
сообщение 26.6.2010, 17:30
Сообщение #1





Гости








    


как можно осуществить выделение группы сложно устроенных виджетов (виджеты могут содержать произвольное количество строк и столбцов текстовой информации), проверку их на наличие одинаковых строк и редактирование одинаковых строк внутри этой группы при помощи qt?

опыта в программирование ui практически не имею. если мои запросы завышены, не стесняйтесь, укажите мне на это.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 26.6.2010, 19:32
Сообщение #2


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

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

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




Репутация:   34  


А что понимается под "выделением" ? :)

Проверка на наличие одинаковых элементов: перебрать все объекты и посчитать количество уникальных строк. Где будет больше 1 - там.
Можно применить std::map - как раз для этой задачи подойдёт

    #include <map>

    struct QMyWidget
    {
        QString m_str;
    };

    typedef std::map<QString,int> td_counter;
    td_counter _counter;

    typedef std::map<QMyWidget*,int> td_list;
    td_list _list;

    //перебираем виджеты
    QMyWidget* p=0;
    for(.....;......;......)
    {
        //p->m_str - строка из текущего виджета
        if((++_counter[p->m_str])>1)
        {
            _list[p];
        }
    }

    //_list - список указателей на виджеты с повтором

    if(_list.size())
    {
        //пройдёмся по виджетам с дублями
        td_list::iterator it;
        for(it=_list.begin();it!=_list.end();it++)
        {
            QMyWidget* p=it->first;

            //*p - текущий виджет с повтором
            //...
        }
    }


если строки аааафигеть большие, можно заменить ключ с QString на структуру с длиной строки и CRC16 строки (своеобразный хеш)

Сообщение отредактировал Алексей1153 - 27.6.2010, 7:49
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 18.2.2025, 9:48