подписка



RSS  Подписатся на блог



Follow me!  Follow me!

комментарии

поиск

статистика



 

QSqlTableModel запрет редактирования колонки.

clock июля 26, 2010 06:07 by author cya-st

Сегодня короткая статья о том как сделать колонки только для чтения (ReadOnly) в QTableView через модель.

И так определяем клас модели. В класе модели нужно переопределить метод flag:

1: class MyModel : public QSqlTableModel //Model
2: {
3:     Q_OBJECT
4: public
5:     MyModel(QObject * parent = 0, QSqlDatabase db = QSqlDatabase());
6:     Qt::ItemFlags flags(const QModelIndex &index) const; //В этой функции запрещаются колонки на редактирование
7:     //...
8: };

Реализовываем виртуальный метод flag:

1: Qt::ItemFlags MyModel::flags(const QModelIndex &index) const
2: {
3:     Qt::ItemFlags flags = QSqlQueryModel::(index);
4:     if (index.column() == 5 || index.column() == 9 ||
5:       index.column() == 10)
6:         flags |= Qt::ItemIsEditable;
7:     return flags;
8: }

Колонки 5, 9, 10 (нумерация колонок начинается с 0) можно редактировать все остальные поля только ReadOnly.

Теперь подключаем модель:

1: modelMain = new MyModel;
2: modelMain->setTable("TableTemp");
3: //...
4: modelMain->select();
5: modelMain->setEditStrategy(QSqlTableModel::OnFieldChange);
6: m_ui->tableView->setModel(modelMain);

Вот простейшая реализация задачи задания ReadOnly полей. С вопросами прошу в комменты.





Бета версия Qt 4.7.0 и QtCreator 2.0

clock мая 6, 2010 11:12 by author cya-st

Qt 4.7.0 Beta1 теперь доступна для скачивания на странице загрузки Qt. Бета-версия включает в себя оба источника пакета (.zip и. tar.gz формат) и бинарные пакеты (для Mac Cocoa, Mac Carbon, MinGW 4.4.0 и Visual Studio 2008).

Больше месяца прошло с момента выпуска 2.0 альфа-релиза QtCreator. Скачать можно тоже на странице загрузки Qt.





Qt Creator - ошибка доступа к документации

clock февраля 14, 2010 17:08 by author cya-st

Сегодня краткая статья. Сталкивался с этой проблемой, пишу для того что-бы запомнить и конечно для моих читателей. Иногда после обновления  Qt/Qt Creator, в Qt Creator возникает ошибка доступа к документации. Простое лечение: в Qt Creator заходим в пункт меню "Tools->Options", далее переходим на вкладку "Help->Documentation", в "Registered Documentation" удаляем все записи, и добавляем все файлы с расширением *.qch из папки QTDIR/doc/qch на жестком диске. После этого переходим на вкладку "Qt4->Qt Versions" и проверяем правильность указания путей к QMake и MinGW, нажимаем кнопку Rebuild. Перегружаем программу Qt Creator (на вякий случай), и радуемся работе справки Assistant. Если что не понятно, прошу в комменты.





1C Предприятие и Visual C++

clock декабря 24, 2009 12:23 by author cya-st

В данной статье показано, как можно работать с 1С Предприятием из С++ с помощью OLE DB. Дело в том, что 1С не предоставляет для своих пользователей библиотеки импорта (*.tlb), поэтому единственный способ работы (если не использовать какие либо обёртки) - это позднее связывание.

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

Ещё...





S/N винчестера

clock декабря 16, 2009 16:58 by author cya-st

Сейчас я вам покажу как с помощью Windows API получить типа носителя и/или его серийный номер. Использоваться это может в системе контроля например, или в средствах защиты ПЗ использующих привязку к железу.

Нам понадобится всего 2 API - функции:

  • GetDriveType - определяет и возвращает тип носителя;
  • GetVolumeInformation - определяет информацию о носителе, среди которой содержится серийный номер.

Рассмотрим описание этих функций для С++. Первой будет функция GetDriveType, она очень простая и использует всего один параметр - указатель на том. Например "c:\","a:\" и т.д. Функция возвращает одно из следующих значений:

Ещё...