Privacy policyContactsAbout siteOpinionsGitHubDonate
© EVILEG 2015-2018
Recommend hosting
TIMEWEB
ЧГ
March 15, 2019, 4:44 a.m.
Чарльз Грин

Добрый день, возник вопрос: можно ли как нибудь прочитать ppt, PPTX файл на Qt? Задача: просто открыть презентацию, ее слайды отрисовать на виджет, с сохранениями гифок и того что там будет. Может быть у PowerPoint какой-то API в наличии , который позволяет так сделать? Либо может быть через ActiveX как нибудь? Буду благодарен за помощь!

March 4, 2019, 9:08 a.m.

Qt

pro, QMake, Qt

Вступление

Qmake - это очень мощная система "meta-make", которую можно использовать для генерации make-файлов для различных компиляторов и платформ из одного и того же файла проекта qmake (.pro). Документация для qmake значительно улучшилась с Qt3, но все еще отсутствует некоторая информация. В этой статье все расскажем на примерах.

n
Feb. 24, 2019, 3:41 p.m.
newbie.works.with.QT

Здраствуйте подскажите пожалуйста:

значение из C++ передаётся в qml, но только один раз при запуске, а мне нужно постоянно проверять переменную из txt.

Вот проект ifsprite.h:

#ifndef IFSPRITE_H
#define IFSPRITE_H

#include <QObject>

class IFSprite : public QObject
{
     Q_OBJECT
public:
    IFSprite();
    Q_INVOKABLE QString getString();

};

#endif // IFSPRITE_H

ifsprite.cpp

#include "ifsprite.h"
#include <fstream>
#include <iostream>
#include <cstring>

using namespace std;

IFSprite::IFSprite()
{

}

QString IFSprite::getString()
{
    ifstream fin("D:\\Progmator\\input.txt");


    int temp;
    fin >> temp;


    fin.close();

    return QString::number(temp);
}

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>

#include "ifsprite.h"


int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    IFSprite _sprite;

    QQmlContext *ctx = engine.rootContext();
    ctx->setContextProperty("IFSprite",&_sprite);
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    return app.exec();
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
import QtQuick.Dialogs 1.2

Window {
    flags: Qt.ToolTip | Qt.FramelessWindowHint | Qt.WA_TintedBackground |Qt.WindowStaysOnTopHint

    color: "#00000000"
visible: true
width: 100
height: 460
x: (Screen.width - width)
y: (Screen.height - height)
Rectangle {
    anchors.fill: parent
    color: "transparent"
}
AnimatedSprite {
    id: sprite;
    width: 100;
    height: 100;
    anchors.centerIn: parent;
    source: "Donald.png"
    frameX: 0
    frameY: IFSprite.getString();
    frameRate: 18;
    frameWidth: 100
    frameHeight: 100
    frameCount: 6
    running: folse;
}
}

n
Feb. 23, 2019, 11:10 p.m.
newbie.works.with.QT

ifsprite.cpp

#include "ifsprite.h"
#include <fstream>
#include <iostream>
#include <cstring>

using namespace std;

IFSprite::IFSprite()
{

}

QString IFSprite::getString() const
{
    ifstream fin("input.txt");


    int temp;
    fin >> temp;


    fin.close();

    return temp;//Вот здесь нужно чтобы return понял что надо считать переменную
}
m
Feb. 14, 2019, 6:31 p.m.
mr_roman

Добрый вечер. Знаю, что для взаимодействия основного android-приложения с сервисом можно использовать классы модуля remoteobjects. Скажите, пожалуйста, а можно ли вместо этого использовать классы QTcpServer и QTcpSocket. На мой взгляд, так было бы даже удобнее, если возможен такой подход. Спасибо!

m
Feb. 12, 2019, 2:56 p.m.
mr_roman

Добрый вечер. Уже несколько дней пытаюсь решить проблему с работой акселерометра в android-сервисе. Перепробовал разные варианты, но решить проблему так и не удается.

Сервис разрабатываю как отдельное приложение. После сборки подключаю его в основной проект как .so библиотеку.

В сервисе пишу следующий код для запуска акселерометра: в .h файле:

private: 
    QAccelerometer *m_sensor;

в .cpp файле (в конструкторе класса):

GSensorClass::GSensorClass(QObject *parent) : QObject(parent)
{
    m_sensor = new QAccelerometer(this);
    connect(m_sensor, SIGNAL(readingChanged()),
                this, SLOT(onReadingChanged()));
    m_sensor->setAlwaysOn(true); //Должен работать постоянно, даже при выключенном экране и в фоне
    m_sensor->start(); //Вот именно здесь и появляется проблема
}

m_sensor->start(); возвращает false. При этом, если вызвать m_sensor->error(), возвращает 0. Соответственно, в слот onReadingChanged войти не удается.

В файле .pro сервиса и основного проекта добавлено - QT += sensors. В AndroidManifest.xml основного проекта добавлена строка

<uses-feature android:name="android.hardware.sensor.accelerometer" />

Если этот же код запустить в GUI-приложении под Android, все работает, координаты x,y,z удается получить. Но в сервисе (консольном приложении) метод start не срабатывает, и возвращает false.

Может быть что-то не правильно делаю? Надеюсь, что реализация получения данных от акселерометра в android-сервисе на Qt возможна? Помогите, пожалуйста, решить проблему.

Feb. 7, 2019, 5:36 p.m.
Михаиллл

здравствуйте. Как загрузкить ресуры в QTextDocument

QTextDocument htmlTextDoc;
//QTextDocument *htmlTextDoc = new QTextDocument();
htmlTextDoc->loadResource(1,myUrl);

выдает ошибку: 'loadResource' is a protected member of 'QTextDocument' и еще вопрос по той же теме, если делаю так, то ничего не загружается:

ui->basedWindowTextEdit->loadResource(QTextDocument::HtmlResource,myUrl);
Feb. 4, 2019, 10:52 a.m.
Михаиллл

Добрый день. Не стоит на компьютере OpenGL (старая видеокарта). Как можно прикрутить к Qt эти библиотеки, что бы заработали QML Visual Editor?

АБ
Jan. 28, 2019, 10:04 p.m.
Александр Бардашевский

Здравствуйте. Задача сделать так, чтобы программа работала в двух потоках. Нужно искусственно слипать поток, дабы эмулировать долгие вычисления.

В первом: 1. Формируется запрос на вычисление и происходит добавление его в очередь потока 2 (при нажатии на кнопку = ). 2. Вывод результатов (например в qDebug), полученных из потока 2

Во втором (доступ к потоку 2 должен быть потокобезопасным): 1. Как завершится пред. вычисление, преступать к следующему поступившему из потока 1. 2. Извлеченный элемент отправляется на обработку. 3. Ожидание окончания 4. Передача результата в основной поток

С библиотекой QThread не знаком, + читал о нескольких способах реализации, так и не понял как сделать грамотнее.

void MainWindow::equal_pressed()
{
    double displayNumber;
    double secondNum = ui->display->text().toDouble();
    QString DisplayText;

    if (ui->pushButton_add->isChecked())
    {
        qDebug() << "New request: " << firstNum << " + " << secondNum;
        std::thread thread_2([&displayNumber,secondNum,this](){displayNumber = compute(add,firstNum,secondNum); });
        thread_2.join();                                        // это конечно неправильно, выходит тоже самое что и в одном потоке. Где-то нужно создать std::queue мб и туда помещать запросы
        DisplayText = QString::number(displayNumber,'g',15);    // только как.
        ui->display->setText(DisplayText);
        ui->pushButton_add->setChecked(false);
        qDebug() << "Result: " << displayNumber;
    }
    else if (ui->pushButton_subtract->isChecked())
    {
        qDebug() << "New request: " << firstNum << " - " << secondNum;
        displayNumber = compute(substract,firstNum,secondNum);
        DisplayText = QString::number(displayNumber,'g',15);
        ui->display->setText(DisplayText);
        ui->pushButton_subtract->setChecked(false);
        qDebug() << "Result: " << displayNumber;
    }
    else if (ui->pushButton_mult->isChecked())
    {
        qDebug() << "New request: " << firstNum << " * " << secondNum;
        displayNumber = compute(mult,firstNum,secondNum);;
        DisplayText = QString::number(displayNumber,'g',15);
        ui->display->setText(DisplayText);
        ui->pushButton_mult->setChecked(false);
        qDebug() << "Result: " << displayNumber;
    }
    else if (ui->pushButton_divide->isChecked())
    {
        qDebug() << "New request: " << firstNum << " / " << secondNum;
        try
        {
            displayNumber = compute(divide,firstNum,secondNum);;
            if (secondNum == 0.0) {throw 1; }
            DisplayText = QString::number(displayNumber,'g',15);
            ui->display->setText(DisplayText);
            ui->pushButton_divide->setChecked(false);
            qDebug() << "Result: " << displayNumber;
        }
        catch (int e)
        {
            qDebug() << "Error: You cannot divide by zero!";
        }
        ui->pushButton_divide->setChecked(false);          //чтобы можно было продолжить пользоваться программой, после деления на 0
    }

    userTypingSecondDigit = false;
}

double MainWindow::compute(int Type, double OperandA, double OperandB)
{
    switch (Type) {
        case add:
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
            return OperandA + OperandB;
        }
        case substract:
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
            return OperandA - OperandB;
        }
        case mult:
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
            return OperandA * OperandB;
        }
        case divide:
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(delay_ms));
            return OperandA / OperandB;
        }
    }
}

Просьба помочь разобраться с данной задачей. QT для меня в новинку

ПМ
March 18, 2019, 3:12 p.m.
Пётр Махнёв

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:50points,
  • Rating points-4
ЯГ
March 18, 2019, 7:59 a.m.
Ян Греку

C++ - Тест 003. Условия и циклы

  • Result:21points,
  • Rating points-10
МД
March 15, 2019, 4:32 p.m.
Михаил Дементьев

C++ - Test 001. The first program and data types

  • Result:60points,
  • Rating points-1
Last comments
March 16, 2019, 1:55 p.m.
Дмитрий

Спасибо за статью. Давно итересует следующий вопрос: с помощью переменных QMAKE_TARGET_COMPANYQMAKE_TARGET_PRODUCTQMAKE_TARGET_DESCRIPTIONможно задать свойства компилируемой программы, о...
JS
March 12, 2019, 10:19 a.m.
Jean Stefanovich

Большое спасибо за разъяснения!
March 12, 2019, 10:04 a.m.
Евгений Легоцкой

Hello, In fact, this functionality or is not implemented, or is not documented. I'm not sure. But I think, that it should be implemented in Text QML Type. Because of we can write text in...
March 12, 2019, 9:51 a.m.
Евгений Легоцкой

Да вы правы. На самом деле проще через QSqlQueryModel, сколько не пытался использовать эти дженерики типо QSqlTableModel и QSqlRelationalTableModel, то всегда упирался в какие-то их ограничени...
JS
March 12, 2019, 9:47 a.m.
Jean Stefanovich

Единицы измерения лежат там же где и названия продуктов. Просто в таблице ингредиенты нет ещё одного столбца, на который можно было бы установить setRelation. Я в итоге в базе создал ещё один ...
Now discuss on the forum
March 17, 2019, 10:47 p.m.
Евгений Легоцкой

Добрый день. Вот, нашлось у меня немного времени. Делается это через шаблон проектирования наблюдатель. GraphKS_mfvSlup.zip
ЧГ
March 15, 2019, 9:52 p.m.
Чарльз Грин

спасибо, попробую, отпишусь
m
March 15, 2019, 7:41 p.m.
mihamuz

Сори догадался)
n
March 12, 2019, 4:57 p.m.
newbie.works.with.QT

Большооооое спасибо!!!!!Не передать как я вам благодарен, спасибо что всегда отзываетесь.Теперь я смогу продолжить работу в QT!!! (пробую писать бота (Я как вы могли догадаться немного не пр...
March 12, 2019, 1:20 p.m.
BlinCT

Ну так если у вас есть готовая программа так ей и воспользуйтесь. Вы же написали ее вот и пользуйтесь.
Join us in social networks

For registered users on the site there is a minimum amount of advertising