crossplatform.ru

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


  Ответ в Как перерисовать QTableWidget
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость Дата 30.11.2009, 16:04
  http://bugreports.qt.nokia.com/browse/QTBUG-5042
skmdeveloper Дата 20.10.2009, 19:05
  Проблема устранилась косвенным способом, после того как поправил еще одну проблему. Почему то после выбора элемента активным становилось не начальное дочернее окно, а первое по списку. Пришлось реализовать запоминание текущего окна
Раскрывающийся текст

_aw = mainWwindow()->mdiArea()->currentSubWindow(); // запоминаем текущее дочернее окно

// здесь необходимые действия

mainWwindow()->mdiArea()->setActiveSubWindow(_aw); // делаем активным исходное окно

MoPDoBoPoT Дата 20.10.2009, 17:22
  По-моему после изменения данных надо сигнализировать об этом
void UiReferenceWidget::setICell(int id, int column, const QVariant& value) { // на входе идентификатор строки, номер колонки, значение
    int row = findRow(id); // находим строку по идентификатору
    if(id > 0) {
        QTableWidgetItem *i = item(row,column); // получаем элемент таблицы
        if(i) {
            i->setData(Qt::EditRole,value); // изменяем значение
            setCurrentItem(i); // на всякий случай делаем ячейку текущей.

            emit cellChanged(row, column)/itemChanged(i); <==
        }
    }
}
skmdeveloper Дата 20.10.2009, 17:04
 
Цитата(trdm @ 20.10.2009, 18:17) *
А ТЗ есть? Намыль если есть, помотрю, где можем пересечься.


ТЗ только в голове. Времени нет - кодирую почти целыми днями, пока выдалось свободное время.
trdm Дата 20.10.2009, 15:17
  Вот сорцы:


А ТЗ есть? Намыль если есть, помотрю, где можем пересечься.
Могу свое в ответку кинуть, оно правда не доработано.
skmdeveloper Дата 20.10.2009, 15:01
 
Цитата(trdm @ 20.10.2009, 17:11) *
Давно тебе говорил, хостанись и сцылку дай.


Пока некогда и нечего - код в постоянной разработке и переработке. Как только более-менее утрясется - выложу.

Цитата(trdm @ 20.10.2009, 17:11) *
Одно "но" я не работал с моделями/представлениями плотно, может там все есть что мне надо..


Это самое что нужно. Любые типы данных, в том числе объекты любых классов, можно приводить к типу QVariant и держать непосредственно в ячейках таблицы. А отображать их в ячейках в удобном виде.

Цитата(trdm @ 20.10.2009, 17:11) *
Но я бы пошел другим путем, портировал бы:
http://www.1cpp.ru/docum/html/TableField.html


Табличное поле и у меня планируется - таблица как обычный тип данных.

Ну я уж слишком много написал - привязываться к чему либо уже поздно. Табличные элементы управления у меня функционируют нормально - с MVC разобрался, кроме описанного мной почти не заметного в работе недостатка. Думаю, проблема все таки разрешима.
Тем более стараюсь по возможности придерживаться стиля Qt - а

trdm Дата 20.10.2009, 14:11
 
Цитата(skmdeveloper @ 20.10.2009, 13:46) *
Я пишу программную платформу типа 1С Предприятия.

хм, я тоже.
Давно тебе говорил, хостанись и сцылку дай.

Цитата(skmdeveloper @ 20.10.2009, 13:46) *
Выбирать элементы справочника в недиалоговых окнах (как в 1С) у меня получается. Даже если справочник одновременно открыт в нескольких окнах, то изменения между ними синхронизируются, но почему-то только после получения ими фокуса мыши.

таймер поставь, ы?
Но я бы пошел другим путем, портировал бы:
http://www.1cpp.ru/docum/html/TableField.html
на Qt.
Одно "но" я не работал с моделями/представлениями плотно, может там все есть что мне надо..
skmdeveloper Дата 20.10.2009, 12:46
 
Цитата(SABROG @ 20.10.2009, 11:25) *
И ты хочешь уйти от диалога, т.е. переписать код? Чем обычное редактирование ячейки не устраивает?


Я пишу программную платформу типа 1С Предприятия.

Выбирать элементы справочника в недиалоговых окнах (как в 1С) у меня получается. Даже если справочник одновременно открыт в нескольких окнах, то изменения между ними синхронизируются, но почему-то только после получения ими фокуса мыши.

Вот функция-слот, которая получает возвращаемое значение:
Раскрывающийся текст
void UiReferenceWidget::setICell(int id, int column, const QVariant& value) { // на входе идентификатор строки, номер колонки, значение
    int row = findRow(id); // находим строку по идентификатору
    if(id > 0) {
        QTableWidgetItem *i = item(row,column); // получаем элемент таблицы
        if(i) {
            i->setData(Qt::EditRole,value); // изменяем значение
            setCurrentItem(i); // на всякий случай делаем ячейку текущей.
        }
    }
}


Ничего особенного, кажется.
Litkevich Yuriy Дата 20.10.2009, 9:08
 
Цитата(skmdeveloper @ 20.10.2009, 9:33) *
P.S. И еще дополнительный вопрос. Как управлять внешним видом заголовка дочернего окна в MDI? Например сделать текст заголовка окна не по центру, а по левому краю.
для этого сделай отдельную тему, если не подойдут имеющиеся на форуме.

Одна проблема - одна тема
SABROG Дата 20.10.2009, 8:25
 
Цитата(skmdeveloper @ 20.10.2009, 6:33) *
В некоторые колонки значение выбирается с помощью диалога.

Т.е. сейчас у тебя используется диалог?

Цитата(skmdeveloper @ 20.10.2009, 6:33) *
диалоговые окна применять у меня не годится


И ты хочешь уйти от диалога, т.е. переписать код? Чем обычное редактирование ячейки не устраивает?

Цитата(skmdeveloper @ 20.10.2009, 6:33) *
Как заставить перерисоваться виджет при программном изменении значений в таблице?

Вроде как сам должен перерисовываться. Надо смотреть код.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.4.2024, 21:57