вторник, 23 апреля 2019 г.

QTreeView items spacing

Как сделать отступ между элементами QTreeView?

Первый и простой способ - заюзать styleSheet.

my_tree_->setStyleSheet(".QTreeView::item{ margin: 0px 6px 6px 6px; border: 0;}");

Второй тру способ заюзать делегата.
my_tree_->setItemDelegate(new MyItemDelegate(this));

MyItemDelegate::MyItemDelegate(QObject * parent)
: QItemDelegate(parent)
{
}

QSize MyItemDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
{
   QSize sz = QItemDelegate::sizeHint(option, index);
   sz.setHeight(sz.height() + 10);//накидываем 10 пикселей по 5 сверху и снизу
   return sz;
}

void MyItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
   const QModelIndex &index) const
{
   QStyleOptionViewItemV3 opt = option;
   opt.rect.adjust(0, 0, -5, -5);//немножко уменьшаем размер item для отрисовки
   QItemDelegate::paint(painter, opt, index);//рисуем
}
Вот таким нехитрым способом можно сделать отступы между элементами, мать их, убил на это полдня.
У QListView есть setSpacing, которого нет у QTreeView.



вторник, 2 апреля 2019 г.

OpenSSL https

Как добавить поддержку OpenSSL в собранную Qt.

1) Ставим OpenSSL в D:\OpenSSL.

2) configure -debug-and-release -mp -qt-zlib -qt-libjpeg -qt-libpng -opensource -platform win32-msvc2008 -openssl -I D:\OpenSSL\include -L D:\OpenSSL\lib

3) cd %QTDIR%:\src\network
4) qmake
5) nmake

В проекте:
QMAKE_LIBDIR += d:/OpenSSL/lib
LIBS += libeay32.lib ssleay32.lib crypt32.lib
INCLUDEPATH += D:/OpenSSL/include

Проверяем
#include <QSslConfiguration>
QSslConfiguration config = QSslConfiguration::defaultConfiguration();

Должно собраться.

HTTPS запрос.

   QNetworkRequest request;

   QSslConfiguration config = QSslConfiguration::defaultConfiguration();
   config.setProtocol(QSsl::TlsV1);
   request.setSslConfiguration(config); 
   request.setUrl(url);
   QNetworkReply *netReply = netManager.get(request);


Postgres SQL

Поддержка Postgres SQL.
1) Скачиваем бинари постгреса отсюда https://www.postgresql.org/download/
2) Копируем бинари на НЖМД  например сюда D:\pgsql
3) Добавляем в PATH путь D:\pgsql\bin
4) Собираем плагин в Qt
  1. Конфигурируем исходники и включаем нужный драйвер как plugin
    configure.exe -I D:/pgsql/include -L D:/pgsql/lib -plugin-sql-psql
  2. cd src\plugins\sqldrivers\psql
  3. qmake
  4. nmake
Проверяем, что в %QTDIR%\plugins\sqldrivers появились файлы qsqlpsql4.dll
qsqlpsqld4.dll

pro файл править не надо. Используем в проекте

      db_ = QSqlDatabase::addDatabase("QPSQL");
      db_.setHostName("host");
      db_.setPort(5432);
      db_.setDatabaseName("bisys");
      db_.setUserName("postgres");
      db_.setPassword("postgres");

      db_.open();