Сегодня короткая статья о том как сделать колонки только для чтения (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 полей. С вопросами прошу в комменты.
bd547e06-3d5d-4a3f-afe7-b50712e780a1|1|5.0
eXaro - инструмент построения отчетов, который распространяется по лицензии LGPL. Сегодня речь пойдет о установке eXaro в Windows. Для этого нужно установить некоторые дополнительные пакеты и собственно сам инструмент CMake, с помощью которого мы будем устанавливать пакеты и eXaro. Берем CMake здесь, устанавливаем и переходим к установке дополнительных пакетов.
Скачиваем zlib, просто распаковываем (устанавливать не надо) архив, у меня это C:\libs\zlib.
Далее ставим пакет quazip специально заточен под cmake. В cmake нужно добавить параметры: ZLIB_INCLUDE_DIR = C:\libs\zlib\include; ZLIB_LIBRARY = C:\libs\zlib\lib\libz.dll.a. При конфигурации выбрать компилятор MinGW. Если возникает ошибка, "...install Library TARGETS given no DESTINATION!", то тогда в файле quazip/CMakeLists.txt находим строку "install(TARGETS quazip LIBRARY DESTINATION lib)" и вытираем слово LIBRARY. Снова пробуем конфигурировать в CMake, при успешной кнфигурации, нажимаем кнопку Generate. Теперь можно собирать, переходим в папку которую вы указали в cmake для генерации либов и вызываем mingw32-make. Библиотеки собраны, переходим к следующему шагу.
Скачиваем libpng, процес установки не отличается от установки quazip.
Property Editor, zint аналогично как quazip.
Далее устанавливаем eXaro, задаем все переменные которые будут выводится красным при конфигурировании в CMake, это пути на дополнительные пакеты которые мы собрали. На этом все. Если есть вопросы, прошу в комменты.
dae29ee0-8ae6-4c9d-a15d-7956d157753c|2|5.0
Qt 4.7.0 Beta1 теперь доступна для скачивания на странице загрузки Qt. Бета-версия включает в себя оба источника пакета (.zip и. tar.gz формат) и бинарные пакеты (для Mac Cocoa, Mac Carbon, MinGW 4.4.0 и Visual Studio 2008).
Больше месяца прошло с момента выпуска 2.0 альфа-релиза QtCreator. Скачать можно тоже на странице загрузки Qt.
789018fb-318a-4a0c-860a-50f73a6a0ca5|1|5.0

марта 17, 2010 15:45 by
cya-st
Сегодня я расскажу об оптимизации скорости сборки программы под Windows, при использовании IDE QTCreator, и компилятора MinGW/GCC.
GCC долго собирает программы, если файлы слишком большие и при этом включена оптимизация -O2 и выше. Обычно возникают тормоза, когда в дизайнере много контролов, в результате этого на основе xml файла uic'ом генерируется *.cpp файл большого размера. Стоит поменять надпись на кнопочке в интерфейсе, как всё это начнет заново пересобираться.
Решением может быть использование утилиты, которая разбивает сгенеренные uic'ом файлы, называется SplitUI. Сам я ей не пользовался и поэтому не знаю, работает ли она сейчас. Предпочитаю вместо неё ставить нулевую оптимизацию, если проектирую интерфейс и требуется частая пересборка. Для этого в файле проекта *.pro, добавьте следующее:
QMAKE_CFLAGS_DEBUG += -O0
QMAKE_CXXFLAGS_DEBUG += -O0
QMAKE_OBJECTIVE_CFLAGS_DEBUG += -O0
Для сравнения программа, которая может собираться 10 минут, собирается за 30 секунд с отключенной оптимизацией.
5db9a51a-b93c-4255-83f6-5159ee180258|4|5.0

марта 11, 2010 16:05 by
cya-st
Сегодня вышел Qt 4.7.0 Tech preview и QtCreator 2.0 alpha, это предварительная версия для всех желающих как можно скорее ознакомиться с новшествами Qt. Окончательный релиз Qt 4.7.0 планируется в середине лета текущего года.
Наиболее значимое новшество в этой версии, это Qt Quick — набор инструментов для быстрого создания графического интерфейса, который позволяет создавать динамические пользовательские интерфейсы легче и эффективнее чем это возможно в текущих версиях, состоит из QML, QtDeclarative, Qt Creator.
Посмотреть, что нового в Qt 4.7.0 можно здесь.
Скачать Qt 4.7.0 и QtCreator 2.0 можно здесь.
9ab52e58-4f56-432d-af0c-3b17301a0b7c|1|5.0

февраля 14, 2010 17:08 by
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. Если что не понятно, прошу в комменты.
c2c0fd3b-93e3-4090-a125-04407f9b5e63|1|5.0