Перейти до основного вмісту

Публікації

Показано дописи з 2016

QTabBar

Спадкування в Qt це практично безмежне поле можливостей. Щоб не копатися в ісходниках минулих проектів в пошуках "я це колись робив і тепер хочу це сюди", вирішив розмістити кілька записів тут. Перший - QTabBar. Легкий переділ для швидкого проекту, сподіваюся він мені ще стане в нагоді. #ifndef TABBAR_H #define TABBAR_H #include #include #include #include #include #include class TabBar : public QTabBar { public:     explicit TabBar(QWidget* parent=0) : QTabBar(parent){         setIconSize(QSize(24, 24));     } protected:     QSize tabSizeHint(int) const {     return QSize(200, 60); } void paintEvent(QPaintEvent *){     QStylePainter p(this);     for (int index = 0; index < count(); index++){        QStyleOptionTabV3 tab;        initStyleOption(&tab, index);        QIcon tempIcon = tab.icon;        QString tempText = tab.text;        tab.icon = QIcon();        tab.text = QString();        p.drawControl(QStyle::CE_TabBarTab, tab

Qt зависання процесу в Windows

Я лінуксоід, і вже натякав на це в інших постах. Але я роблю програми не тільки для використання в середовищі Linux, а й для Windows. Велика частина з того, що я робив первинно була написана саме в Linux, а вже потім перенесена в Windows. Тестуючи програми в обох системах, маю зазначити таку неприємну особливість Windows. При виконанні тривалого процесу, вікно програми зависає. Запускаючи той же самий процес в Linux, принаймні на Ubuntu, такого не трапляється. Наведу невеличкий приклад. Потрібно витягнути з файлу декілька рядків. Звичайно, читаючи 20 рядків користувач нічого не помітить. Але я стикався з завданнями, коли обробити потрібно 15 або навіть більше 40 тисяч рядків. І в такому процесі виникає тимчасове "зависання" вікна. Вікно на будь-які дії не відповідає, а іноді Windows просто показує, що програма зависла. Якщо прогресс не відображається, найчастіше, сторонній користувач в диспетчері задач просто "вбиває" процес. Насправді ж процес обробки даних триває

HTML в QTableWidgetItem

В програмі Journal, яка власне так і залишилась без хазяїна, одна з форм носить функції відображення успішності. Може це і не дуже раціонально, але для відображення табличної інформації мені більш подобається працювати з QTableWidget, ніж з моделями і QTableView. У таблиці мені потрібно було, щоб одна з колонок, відображала форматований текст. Але як відобразити форматований текст в QTableWidget якщо він не вміє відображати HTML. В цьому сенсі він досить тупий та все сприймає як текст і ось що виходить ... Може хтось знає як зробити текст форматованим без HTML? Треба буде опитувальник причепити. Отже я бачу два шляхи вирішення. Перший зробити свій віджет з потрібними делегатами. Другий - інший, його я і вибрав. Немає сумнівів, розумніше було б піти по першому шляху, але мені потрібна була тільки одна колонка і тільки HTML. Якби знадобився CheckBox або ComboBox, я не вибирав би. Потрібне я отримав ось так: QLabel * lable = new QLabel; lable-> setText ( "<b>Some te

Qt + Microsoft Excel 2003 XML

Останнім часом все більше часу приділяю розробці програм для машинної обробки прайс-листів. Прайси приходять в різних форматах xml, xls, txt, csv. І найчастіше результат готую в csv для завантаження його в інтернет магазин. Але не так давно з'явився клієнт, який побажав результат в xslx. У нього самопісний сайт і він хотів би деяке візуальне оформлення, наприклад, підсвітити кольором певні або проблемні позиції, в заданій умові. Але я працюю з Ubuntu і скажемо так, xlsx - тут не зовсім зручний формат. Честно зізнаюся, я зневірився адже засобами CSV такого не реалізувати. Фактично я вирішив перемогти цю проблему найпростішим шляхом і вже почав готувати "запасний" Windows, щоб там налагодити тандем Qt + Excel. І в цьому процесі я натрапив на формат Microsoft Excel 2003 XML. Пошук в Google дав небагато інформації, частково навіть не помилкової, але всеж таки перспективною. Перше, що я зробив - це створив файл в Calc. Невеличку таблицю 4х3, виділив деякі клітини кольором, д

Розрив з'єднання з віддаленою базою MySQL

У мене є проект treeShop , який працює з базами даних електронних магазинів. У цьому проекті спочатку я вирішив використовувати постійне подлюченіе, і тільки потім, коли мені знадобилося зберігати інші дані я вирішив зробити модуль синхронізації. Як і багато web-майстрів, роботу програми я тестую на локальному веб сервері. Я прихильник Linux'а тому використовую збірку сервера XAMPP. Версія мого qt 5.2.1. Насправді версія не важлива, саме цю я взяв тому, що мені потрібен був webkit. Підключення до бази просте: QSqlDatabase db; db = QSqlDatabase :: addDatabase ( "QMYSQL"); db.setHostName ( "hostName"); db.setDatabaseName ( "databaseName"); db.setPort (3306); db.setUserName ( "userName"); db.setPassword ( "userPass"); db.open (); За великим рахунком цього достатньо, і в тестах прога працює стабільно. Але ж я націлений на віддалене підключення. Крім власне самих налаштувань для з'єднання і користувача з відповідними п

4 роки

З останнього мого поста в цьому блозі пройшло більше чотирьох років. Зізнатися, коли я писав не думав, що читати його буде хтось ще. Проте, за цей час його відвідало близько 2000 чоловік. Це звичайно, не така вже й велика цифра, а в порівнянні напевно мізерна, але з урахуванням специфіки та загальної кількості повідомленнь ... до речі, жодного коментаря. Насправді, чхати я хотів на чужу думку про корисність написаного, мені це абсолютно не цікавить, але конструктивний feed back - це інша справа. За минулий час багато чого змінилося і зараз у мене з'явилася можливість пописати ще. У найближчих повідомленнях я розповім дещо про бази даних і інтернет. Моїм інструментом як і раніше є Qt.