Название: [РЕШЕНО] Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 24, 2012, 21:42 Здравствуйте!
помогите пожалуйста! пытался связать два QTableWidget, так чтобы при изменении у одного из них сортировки столбца, у другого, столбец с таким же индексом получал такой же порядок сортировки количество столбцов у таблиц одинаково киньте пожалуйста минимальный рабочий пример такой реализации) Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: V1KT0P от Сентябрь 24, 2012, 22:30 Я думаю тебе стоит посмотреть в сторону QTableView и QAbstractTableModel.
Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 24, 2012, 22:40 Не могу :)
можно использовать только QTableWidget кроме того, QTableWidget наследуется от QTableView, значит может использовать его методы (не все), покрайней мере слот сортировки по столбцу взято у QTableView :) Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: V1KT0P от Сентябрь 24, 2012, 23:08 Не могу :) И как же ты собираешься для начала отловить событие сортировки столбцов? QTableWidget вообще-то предназначен для самых примитивных случаев.можно использовать только QTableWidget кроме того, QTableWidget наследуется от QTableView, значит может использовать его методы (не все), покрайней мере слот сортировки по столбцу взято у QTableView :) Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 24, 2012, 23:24 Не могу :) И как же ты собираешься для начала отловить событие сортировки столбцов? QTableWidget вообще-то предназначен для самых примитивных случаев.можно использовать только QTableWidget кроме того, QTableWidget наследуется от QTableView, значит может использовать его методы (не все), покрайней мере слот сортировки по столбцу взято у QTableView :) Можно использовать сигнал, идущий от горизонтального заголовка таблицы, когда на нее щелкают мышкой Я делал так: создавал наследника от QTableWidget, перегружал метод сортировки как слот, что то типо такого: Код: void UTable::sortItems(int column, Qt::SortOrder order) Код: connect(table1->horizontalHeader(), SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)), ну а потом, у меня падала программа, и отладчик единственное что показывал это окно дизассенблера, но проблема именно в sortItems() который в наследнике Вот я и обратился сюда, чтобы скинули свой рабочий пример, и я в нем бы разобрался Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: V1KT0P от Сентябрь 24, 2012, 23:41 ну а потом, у меня падала программа, и отладчик единственное что показывал это окно дизассенблера, но проблема именно в sortItems() который в наследнике Ну смотри что получается после соединения сигналами:Вот я и обратился сюда, чтобы скинули свой рабочий пример, и я в нем бы разобрался В 1 таблице нажимаешь на заголовок, срабатывает слот который изменяет порядок сортировки и вызывает сортировку во 2-й таблице которая тоже вызывает слот сортировки которая меняет заголовок и вызывает слот сортировки 1-й таблицы которая вызывает смену заголовка сигнал который вызывает слот сортировки 2-й таблицы которая вызывает изменение заголовка сигнал которой вызывает слот сортировки 1-й таблицы... Думаю мысль насчет рекурсии ясна? =) Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 24, 2012, 23:52 Понятно, посмотрел исходники, сигнал заголовка sortIndicatorChanged(int,Qt::SortOrder) генерируется при вызове setSortIndicator(int logicalIndex, Qt::SortOrder order), а этот метод является частью методов сортировки, моя ошибка :)
Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 25, 2012, 00:15 И как тогда быть? :) каким способом реализовать это?
Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: V1KT0P от Сентябрь 25, 2012, 00:22 И как тогда быть? :) каким способом реализовать это? Добавь ссылки друг на друга и меняй напрямую, только опять же учти чтоб не было рекурсии. Либо добавляй отдельную функцию которая не вызывает изменение у другой таблицы. Либо добавь переменную блокировки вызова функции другой таблицы, тогда устанавливаешь ее в true, вызываешь функцию а когда она отработает false.Название: Re: Синхронная сортировка столбцов нескольких таблиц Отправлено: gil9red от Сентябрь 26, 2012, 00:07 Понятно :)
что нибудь придумаю :) спасибо, V1KT0P :) |