пятница, 30 августа 2013 г.

Как запретить редактирование в QTableView?

Для запрета прямого редактирования в QTableView необходимо выполнить команду:

ui->view->setEditTriggers(QAbstractItemView::NoEditTriggers);

где view — экземпляр класса QTableView.

Как скрыть заголовки строк в QTableView?

Следующая команда скрывает заголовки у строк:

ui->view->verticalHeader()->setVisible(false);

где view — экземпляр класса QTableView.

Error: «invalid use of incomplete type...», «forward declaration of...»

Иногда появляются совершенно непонятные ошибки типа:

error: invalid use of incomplete type 'class QLabel'
error: forward declaration of 'class QLabel'

где вместо QLabel может быть и любой другой виджет.

Лечится ошибка простым добавлением #include <QtWidgets>

Ошибка «Driver not loaded» при использовании SQLite в QT

Если при запуске программы появляется данная ошибка, то необходимо в каталоге с программой создать папку sqldrivers, в которую поместить файл qsqlite.dll.

Файл можно найти ориентировочно тут: C:\Qt\Qt5.1.0\5.1.0\mingw48_32\plugins\sqldrivers.

вторник, 27 августа 2013 г.

Как начать добывать Primecoin?

Для начала необходимо скачать последнюю версию официального клиента: http://sourceforge.net/projects/primecoin/files/.

Затем нужно запустить программу, начнется синхронизация блоков. Перейти в Help — Debug window — Console, где выполнить команду: setgenerate true -1 для задействования всех своих ядер.

Если набрать команду getmininginfo, то можно увидеть свою скорость добычи (параметр primespersec).

Открытие БД SQLite в QT

Сначала необходимо добавить в файл pro: QT+=sql

Подключаем в нужном месте: #include <QtSql>

Затем пишем следующий код:
QSqlDatabase cn = QSqlDatabase::addDatabase("QSQLITE");
cn.setDatabaseName(fileName);
if(cn.open()==false)
{
QMessageBox::critical(0,QObject::trUtf8("Ошибка"),cn.lastError().text(),0,0);
}

где fileName — путь к файлу с базой данных SQLite.

среда, 21 августа 2013 г.

Failed to load platform plugin "windows"

На тестовом стенде: чистая Windows7 x64 + vcredist_x64.exe, версия QT — 5.1.0 MSVC2012 64bit. Сборка программы — релизная. При появлении данной ошибки, необходимо проверить наличие в папке с exe-шником следующих файлов и папки:

platforms\qwindows.dll
icudt51.dll
icuin51.dll
icuuc51.dll
libEGL.dll
libGLESv2.dll
Qt5Core.dll
Qt5Gui.dll
Qt5Widgets.dll

Как убрать знак вопроса из QDialog?

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

И только старина гугл знал ответ:

MyForm *frm = new MyForm(this);
frm->setWindowFlags(frm->windowFlags() & ~Qt::WindowContextHelpButtonHint);
frm->exec();

Oracle и пробел в имени папки с дистрибутивом

Сегодня на работе обнаружили интересный баг инсталлятора клиента Oracle — если в имени папки с дистрибутивом есть пробел, то установка не запустится. Отчего у Oracle такая нелюбовь к пробелу остается только догадываться...

Кроме того, вспоминаю давнишний случай, когда программа, которая использовала клиент Oracle, находясь в папке Program Files наотрез отказывалась запускаться. Но прекрасно запускалась, если её переместить в другую папку (без пробела в имени).