crossplatform.ru

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

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


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 10.10.2010
Пользователь №: 2099

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




Репутация:   0  


Всем доброе время суток!
Мне нужно решить 2 задачи, это сортировка таблицы и поиск.
На форме имею элемент tableWidget, та находятся данные: Login, email, ФИО, группа.

1)Как правильно написать функцию сортировки по ФИО?
2)Как сделать поиск по выбранным мною данным и выделить строку, где есть эти данные?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.2.2011, 8:13
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


bigory, одна проблема - одна тема.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.2.2011, 8:20
Сообщение #3


Zombie Mod
*****

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

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




Репутация:   212  


1) В настройках QTableWidget есть пункт сортировки. Потом можно просто клацать по заголовку столбца.
2)
    for (int i=0; i<tableWidget->rowCount(); ++i)
    {
        if (tableWidget->item(i,0)->text()=="слово(а) поиска")
        {
            //делаем что хотим
        }
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bigory
  опции профиля:
сообщение 2.2.2011, 12:04
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 77
Регистрация: 10.10.2010
Пользователь №: 2099

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 2.2.2011, 8:13) *
bigory, одна проблема - одна тема.


Я очень извиняюсь, но все мои вопросы касаются одного элемента, тем более они не требуют большие разьяснения. Прошу прощения если я немного нарушаю правила.

Цитата(RazrFalcon @ 2.2.2011, 8:20) *
1) В настройках QTableWidget есть пункт сортировки. Потом можно просто клацать по заголовку столбца.


Это все понятно, но мне бы хотелось чтобы при запуске программа сама все сортировала. Я написал код, но хотелось бы посоветоваться, так как думаю что он не очень правильный и не рациональный. Вот сам код:

void MainWindow::sort()
{
    QString a,b;
    int last = ui->tableWidget->rowCount(); // узнаём последнюю по счёту ячейку
    for(int i=0;i<last;i++)
        for(int j=0;j<last;j++)
        {
            a = ui->tableWidget->item(i,2)->data(0).toString();
            b = ui->tableWidget->item(j,2)->data(0).toString();
            if(a<b){
                       QString Login, email, FastName, group;
                       Login = ui->tableWidget->item(i,0)->data(0).toString();
                       email = ui->tableWidget->item(i,1)->data(0).toString();
                       FastName = ui->tableWidget->item(i,2)->data(0).toString();
                       group = ui->tableWidget->item(i,3)->data(0).toString();

                       QString Login1, email1, FastName1, group1;
                       Login1 = ui->tableWidget->item(j,0)->data(0).toString();
                       email1 = ui->tableWidget->item(j,1)->data(0).toString();
                       FastName1 = ui->tableWidget->item(j,2)->data(0).toString();
                       group1 = ui->tableWidget->item(j,3)->data(0).toString();

                       setUser(j, Login, email, FastName, group);            //Это моя функции добавления данных в ячейки
                       setUser(i, Login1, email1, FastName1, group1);     //i,j-номер ячейкм

                   }
        }
}


Я не стал расписывать подробнее что делает setUser, так как он не маленький, работает с добавлением очень хорошо и вопросов о дабавлении нет.
Код сортировки нормальный или его следует переделать? Или есть какая-то готовая функция которая делает то, что мне нужно?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
xls
  опции профиля:
сообщение 2.2.2011, 14:03
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 44
Регистрация: 6.9.2010
Пользователь №: 2013

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




Репутация:   2  


Цитата(bigory @ 2.2.2011, 12:04) *
Это все понятно, но мне бы хотелось чтобы при запуске программа сама все сортировала. Я написал код, но хотелось бы посоветоваться, так как думаю что он не очень правильный и не рациональный. Вот сам код:

1. Сортировку уже в Qt сделали за вас sortByColumn ( единственное, что он для tableView )
2. Поиск лучше сделать через QSortFilterProxyModel
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 2.2.2011, 15:12
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Цитата(xls @ 2.2.2011, 14:03) *
1. Сортировку уже в Qt сделали за вас sortByColumn ( единственное, что он для tableView )


QTableWidget наследует QTableView) так что sortByColumn доступно и для QTableWidget
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 4.12.2020, 4:33