Архив метки: QT-creator

Получите 52мб файлов для простой программы на QT

И вот настал час Х — после разработки приложения в QT Creator вы готовы попробовать запустить исполняемый файл на другом компьютере. Да или просто запустить файл вне QT Creator. И получите ОЙ. Ибо приложение тащит за собой кучу DLL библиотек. Какие именно нужны библиотеки, можно выяснить при помощи инструмента windeployqt.exe, которая поставляется вместе с QT Creator.

Запустив его так:

windeployqt.exe c:\sbssalert\sbssalert.exe

программа скопирует в папку приложения, все необходимые для работы DLL библиотеки. У меня их оказалось 52мб.

Есть конечно способ собрать всё в один exe файл, но для этого требуется очень много телодвижений — нужно из исходников QT Cretator перекомпилировать сам QT Creator . У меня это не получилось.

Эх…

QT Creator : Скачать файл по URL

form1.h:

...
private slots:
           void onResultJson();

private:
    Ui::Form1 *ui;
    QNetworkAccessManager *networkManager;
...

form1.cpp:

...
    networkManager = new QNetworkAccessManager();
    QNetworkReply* mNetReply = nullptr;
    // Получаем данные, а именно JSON файл с сайта по определённому url
    mNetReply=networkManager->get(QNetworkRequest(QUrl("http://xn--90acbu5aj5f.xn--p1ai/files/json")));
    // Подключаем networkManager к обработчику ответа
    connect(mNetReply,SIGNAL(finished()), this, SLOT(onResultJson()));
...

void Form1::onResultJson(){
    qDebug() << "Файл скачали";
    QNetworkReply *reply=qobject_cast<QNetworkReply *>(sender());
    if (reply->error() == QNetworkReply::NoError)
        {
         QByteArray content= reply->readAll();
         qDebug() << content;
....

QT Creator : работа с QtableWidget

Form1::Form1(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::Form1){
    ui->setupUi(this);
   ui->tableWidget->setColumnCount(2); // Указываем число колонок
    ui->tableWidget->setShowGrid(true); // Включаем сетку
    // Разрешаем выделение только одного элемента
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
    // Разрешаем выделение построчно
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
    // Устанавливаем заголовки колонок
    QStringList headers;
        headers.append("Название");
        headers.append("Количество");
    ui->tableWidget->setHorizontalHeaderLabels(headers);
    // Растягиваем последнюю колонку на всё доступное пространство
    ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
    // Скрываем колонку под номером 0
    //ui->tableWidget->hideColumn(0);
    // делаем таблицу readonly
    ui->tableWidget->setEditTriggers(QTableWidget::NoEditTriggers);
    // добавим в ячейки данные
    ui->tableWidget->insertRow(0);
    ui->tableWidget->setItem(0,0, new QTableWidgetItem("Ваши новые тикеты"));
    ui->tableWidget->setItem(0,1, new QTableWidgetItem("0"));
    ui->tableWidget->insertRow(1);
    ui->tableWidget->setItem(1,0, new QTableWidgetItem("-- не завершенные (Менеджер)"));
    ui->tableWidget->setItem(1,1, new QTableWidgetItem("0"));
    ui->tableWidget->insertRow(2);
    ui->tableWidget->setItem(2,0, new QTableWidgetItem("-- не завершенные (Клиент)"));
    ui->tableWidget->setItem(2,1, new QTableWidgetItem("0"));
    ui->tableWidget->insertRow(3);
    ui->tableWidget->setItem(3,0, new QTableWidgetItem("Новых в подразделении"));
    ui->tableWidget->setItem(3,1, new QTableWidgetItem("0"));
    ui->tableWidget->insertRow(4);
    ui->tableWidget->setItem(4,0, new QTableWidgetItem("-- не закрытых"));
    ui->tableWidget->setItem(4,1, new QTableWidgetItem("0"));
    ui->tableWidget->insertRow(5);
    ui->tableWidget->setItem(5,0, new QTableWidgetItem("Заявок на подключения"));
    ui->tableWidget->setItem(5,1, new QTableWidgetItem("0"));
    // растянем все колонки
    ui->tableWidget->resizeColumnsToContents();

 

QT Creator: сворачиваем приложение в трей

Создадим минимальное приложение, которое при закрытии будет сворачиваться в трей, а при нажатии на иконку приложения, показывает пункты меню «показать» и «выйти». Читать далее QT Creator: сворачиваем приложение в трей

QT Creator : вывод кирилицы в консоль (при отладке)

Чтобы не иметь «крякозябров», нужно настроить кодеки при старте программы:

#include "form1.h"
#include <QApplication>
#include <QDebug>
#include <QTextCodec>


int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    QTextCodec *codec1 = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec1);
    QTextCodec::setCodecForTr(codec1);
    QTextCodec::setCodecForCStrings(codec1);
    qDebug() << "создали форму..";
    Form1 w;
    qDebug() << "показали форму..";
    w.show();

    return a.exec();
}