Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
d
7 апреля 2019 г. 9:35
dufus

Как вывести combobox динамически, чтоб каждый combobox соответствовал определённому idModel? У меня есть ThreeDModelTexture наследник QAbstractListModel, который имеет роли Код проблеммы

    enum ThreeDModelRolse {
        nameRole = Qt::DisplayRole,
        idModelRole = Qt::UserRole + 1,
        urlRole = Qt::UserRole + 2
    };
  roles[idModelRole] = "idModel"; roles[nameRole] = "name"; roles[urlRole] = "url";

Полностью класс : threedmodeltexture.h

#ifndef THREEDMODELTEXTURE_H
#define THREEDMODELTEXTURE_H

#include <QString>
#include <QObject>
#include <QString>
#include <QAbstractListModel>
#include <QList>
#include <QVariant>
#include <QModelIndex>
#include "baseqmlabstractlistmodel.h"
class Texture;

class ThreeDModelTexture: public QAbstractListModel
{
    Q_PROPERTY(int _idModel READ idmodel(int) )
    Q_PROPERTY(QString _name READ name(int) )
    Q_PROPERTY(QString _url READ url(int) )
public:
    ThreeDModelTexture(QObject *parent = nullptr);
    ~ThreeDModelTexture();
    enum ThreeDModelRolse {
        nameRole = Qt::DisplayRole,
        idModelRole = Qt::UserRole + 1,
        urlRole = Qt::UserRole + 2
    };
    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
    Q_INVOKABLE int rowCount(const QModelIndex &parent) const; // количество элементов в модели
    void addTexture(Texture tex)const;
    Q_INVOKABLE static int Count();
    Q_INVOKABLE static int boolMatchSearch(int id);

    Q_INVOKABLE int idmodel(const int &id);
    Q_INVOKABLE QString name(const int &id);
    Q_INVOKABLE QString url(const int &id);

public slots:
    QHash<int, QByteArray> roleNames() const;
    Q_INVOKABLE static QList<Texture> textures;
    QHash<int, QByteArray> roles; // роли
};

class Texture
{
public:
    Texture(int _idModel, QString _name, QString _url)
        :idModel(_idModel)
        , name(_name)
        , url(_url)
    {
//        idModel = _idModel;
//        name = _name;
//        url = _url;
    }
    void setName (QString _name)
    {
        name = _name;
    }
    void seturl (QString _url)
    {
        url = _url;
    }
    void setidModel (int _idModel)
    {
        idModel = _idModel;
    }
    QString getName() const
    {
        return name;
    }
    QString getUrl() const
    {
        return url;
    }
    int getIDModel() const
    {
        return idModel;
    }
private:
    int idModel;
    QString name;
    QString url;

};

#endif // THREEDMODELTEXTURE_H

threedmodeltexture.cpp

#include "threedmodeltexture.h"
#include <QDebug>
ThreeDModelTexture::ThreeDModelTexture(QObject *parent) :
    QAbstractListModel(parent)
{
    roles[idModelRole] = "idModel";
    roles[nameRole] = "name";
    roles[urlRole] = "url";
}

QList<Texture> ThreeDModelTexture::textures;

ThreeDModelTexture::~ThreeDModelTexture()
{

}

QVariant ThreeDModelTexture::data(const QModelIndex &index, int role) const
{
    if (index.row() < 0 || index.row() > ThreeDModelTexture::textures.count())
        return QVariant();
    const Texture tex = ThreeDModelTexture::textures[index.row()];
    if (role == idModelRole)
        return tex.getIDModel();
    else if (role == nameRole)
        return tex.getName();
    else if (role == urlRole)
        return tex.getUrl();
    return QVariant();
}

QHash<int, QByteArray> ThreeDModelTexture::roleNames() const
{
    return roles;
}

void ThreeDModelTexture::addTexture(Texture tex) const
{
    ThreeDModelTexture::textures << tex;
}

int ThreeDModelTexture::rowCount(const QModelIndex &parent) const
{
    return ThreeDModelTexture::textures.size();
}

int ThreeDModelTexture::Count()
{
    return ThreeDModelTexture::textures.size();
}

int ThreeDModelTexture::boolMatchSearch(int id)
{
    for(int i=0; i<ThreeDModelTexture::textures.size();i++)
    {
        if (ThreeDModelTexture::textures.at(i).getIDModel()==id)
        {
            return i;
        } else {
            return -1;
        }
    }
    return -1;
}

int idmodel(const int &id)
{
    for(int i=0; i<ThreeDModelTexture::textures.size();i++)
    {
        if (ThreeDModelTexture::textures.at(i).getIDModel()==id)
        {
            return ThreeDModelTexture::textures.at(i).getIDModel();
        } else {
            return -1;
        }
    }
}
QString name(const int &id)
{
    for(int i=0; i<ThreeDModelTexture::textures.size();i++)
    {
        if (ThreeDModelTexture::textures.at(i).getIDModel()==id)
        {
            return ThreeDModelTexture::textures.at(i).getName();
        } else {
            return "";
        }
    }
}
QString url(const int &id)
{
    for(int i=0; i<ThreeDModelTexture::textures.size();i++)
    {
        if (ThreeDModelTexture::textures.at(i).getIDModel()==id)
        {
            return ThreeDModelTexture::textures.at(i).getUrl();
        } else {
            return "";
        }
    }
}

main.cpp

создание экземпляров модели:

    ...
    ThreeDModels.addThreeDModel(new ThreeDModel("false", 1, "ccc","c"));
    ThreeDModels.addThreeDModel(new ThreeDModel("false", 3, "aaa","a"));
    ThreeDModels.addThreeDModel(new ThreeDModel("false", 5, "bbb","b"));


    TextureModel.addTexture(Texture(1, "masta", "masta.jpg"));
    TextureModel.addTexture(Texture(3, "aaa", "aaa.jpg"));
    TextureModel.addTexture(Texture(5, "bbb", "bbb.jpg"));
    TextureModel.addTexture(Texture(3, "ttt", "ttt.jpg"));

    view.engine()->rootContext()->setContextProperty("ThreeDM", &ThreeDModels);
    view.engine()->rootContext()->setContextProperty("TextureM", &TextureModel);

    view.setSource(QUrl("qrc:/Samples/Analysis/ViewshedGeoElement/ViewshedGeoElement.qml"));
    ...

ViewshedGeoElement.qml

        C1.TableView {
            anchors.top: rowLayout.bottom
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: parent.bottom
            id: tableView
            clip: true
            sortIndicatorVisible: true
            currentRow: rowCount ? 0 : -1
            model: SortFilterProxyModel {
                source: ThreeDM.rowCount() > 0 ? ThreeDM : null

                sortOrder: tableView.sortIndicatorOrder
                sortCaseSensitivity: Qt.CaseInsensitive
                sortRole: ThreeDM.rowCount() && tableView.getColumn(tableView.sortIndicatorColumn).role !== "check" > 0 ?
                              tableView.getColumn(tableView.sortIndicatorColumn).role : ""
            }
            C1.TableViewColumn {
                width: 30
                role: "check"
                resizable: false
                delegate: C1.CheckBox {
                    id: checkBox
                    anchors.left: parent.left
                    anchors.leftMargin: parent.width / 3
                    checked: model.check
                    onVisibleChanged: if (visible) checked = model.check
                    onClicked: model.check = checked
                }
            }
            C1.TableViewColumn {
                width: 30
                role: "id"
                title: "id"
            }
            C1.TableViewColumn {
                width: 90
                role: "description"
                title: "description"
            }
            C1.TableViewColumn {
                width: 60
                role: "code"
                title: "code"
            }
            C1.TableViewColumn {
                width: 100
                role: "combobox"
                resizable: false
                title: "Текстура"
                delegate: C1.ComboBox {
                    id: comboListTexture
                    model: ListModel {
                        id: comboModel
                        dynamicRoles: true
                    }
                    Component.onCompleted: {
                        reload()
                    }
                    textRole:"name"
                    onActivated: console.log("Combo Box Index Changed To:", index, model.data(model.index(index, 0), Qt.UserRole + 2 ))

                    function reload() {
                        var i = comboListTexture.currentIndex
                        // console.log("TextureM.boolMatchSearch(1)",TextureM.getidmodel(1),TextureM.getname(1),TextureM.geturl(1))
                        // console.log("TextureM.boolMatchSearch(1)",TextureM._name,TextureM._idModel,TextureM._url)

                        comboListTexture.model = TextureM
                        comboListTexture.currentIndex = i
                    }
                }
            }

...
            style: TableViewStyle {
                headerDelegate: Rectangle {
                    height: textItem.implicitHeight
                    width: textItem.implicitWidth
                    Text {
                        id: textItem
                        anchors.fill: parent
                        anchors.leftMargin: 6
                        verticalAlignment: Text.AlignVCenter
                        horizontalAlignment: styleData.textAlignment
                        text: styleData.value
                    }
                    C1.CheckBox {
                        anchors.left: parent.left
                        anchors.leftMargin: parent.width / 3
                        property bool isPressed: styleData.pressed
                        visible: styleData.column === 0
                        onIsPressedChanged: {
                            if (isPressed && styleData.column === 0) {
                                checked  = !checked
                                for(var i = 0; i < ThreeDM.rowCount(); i++) {
                                    ThreeDM.setData(ThreeDM.index(i, 0), checked, "check")
                                }
                            }
                        }
                    }
                }
            }
        }
    }
21 марта 2019 г. 10:57
Дмитрий

Всем привет!

Хочу с помощью сигнала пробросить в слот массив std::array. Делаю следующее:

using fft_mag_arr= std::array<qint32, SIZE>;
Q_DECLARE_METATYPE( fft_mag_arr );

в конструкторе класса вызываю

qRegisterMetaType<fft_mag_arr>();

само объявление сигнала:

signals:
    void fft_mag_out(fft_mag_arr &fftmag, uint size);

Слот объявлен так (так можно в данном случае, если в сигнале fft_mag_arr?)

void slotFunc(std::array<qint32, SIZE> &arr, uint size);

При запуске приложения при вызове сигнала пишет: QObject::connect: Cannot queue arguments of type 'fft_mag_arr&' (Make shure 'fft_mag_arr&') is registered using qRegisterMetaType().

Как мне пробросить ссылку на std::array с помощью сигнала? Спасибо

26 февраля 2019 г. 14:30
zloi

Добрый день! Подскажите пожалуйста, при запуске андроид приложения пишет: qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed, но когда запускаю на компе все отлично.

P.S. вывод qDebug() « QSslSocket::supportsSsl() « QSslSocket::sslLibraryBuildVersionString() « QSslSocket::sslLibraryVersionString(); (android) false "OpenSSL 1.0.2p 14 Aug 2018" "" (desktop) true "OpenSSL 1.0.2p 14 Aug 2018" "OpenSSL 1.0.2n 7 Dec 2017"

n
29 января 2019 г. 18:40
npukoluct

Добрый день реализовал перемещение персонажа по сцене (и персонаж и сцена унаследованы от QQuickItem), но возникло 2 вопроса: 1)При отпускании клавиши движения(в одну из сторон) хочу чтобы анимация (состоит из четырех кадров) доигрывалась до конца, сейчас персонаж может замереть в любом положении. Как это реализовать? Сам вижу способ реализации, путем выставления флага в методе keyReleaseEvent о том что клавиша отпущена, а остоновку таймера отвечающего за отрисовку анимации перенисти в метод nextFrameHero(), добавив условие, что если флаг в методе keyReleaseEvent выставлен и число кадров кратно 4. Может есть какой-то иной способ этого достичь, или мой способ вполно приемлем?

2)Сейчас слишком большая задержка между нажатиями клавиш движения в разные стороны, при быстрой смене направления движения, как ее снизить?

GameBoxes_wd1R9Io.rar GameBoxes_wd1R9Io.rar

logicscene.h:

#ifndef LOGICSCENE_H
#define LOGICSCENE_H

#include <QQuickItem>
#include <QSGSimpleTextureNode>
#include <QSGTexture>
#include <QQuickWindow>
#include <QKeyEvent>
#include <QTimer>

//подключаем классы объектов
#include "door.h"
#include "hero.h"
#include "box.h"

class LogicScene : public QQuickItem
{
    Q_OBJECT
public:
    LogicScene();
    //установка объектов
    void buildLevel();
    void clearGameScene();

private slots:
    void nextFrameHero();

protected:
    virtual QSGNode* updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) override;
    virtual void keyPressEvent(QKeyEvent *event);
    virtual void keyReleaseEvent(QKeyEvent *event);
signals:

public slots:

private:
    QString backgroundPuth;
    Door *door;
    Hero *hero;
    Box *box;
    QVector <QVector<QQuickItem*>> gameItem; //стакан элементов

    const int sizeItem = 96;
    bool moveRightHero; //кадр вправо? или влево, для спрайта вида как у меня
    QTimer *timerHero; //для смены кадров
    int countTimerHero = 0; //счетчик когда отключить
    int currentDirHero = 0; //направление

};

#endif // LOGICSCENE_H

logicscene.cpp:

#include "logicscene.h"

LogicScene::LogicScene()
{
    setFlag(QQuickItem::ItemHasContents);
    backgroundPuth = ":/gameboxes/background_2.png";
    buildLevel();

    timerHero = new QTimer(this);
    connect(timerHero, &QTimer::timeout, this, &LogicScene::nextFrameHero);
}

void LogicScene::buildLevel()
{
    clearGameScene();
    door = new Door();
    door->setParentItem(this);


    hero = new Hero(96, 96, sizeItem);
    hero->setParentItem(this);


    box = new Box(192, 96);
    box->setParentItem(this);



}

void LogicScene::clearGameScene()
{
    for (int i = 0; i < 10; i++)
    {
        QVector <QQuickItem*> temp;
        for (int j = 0; j<20; j++)
        {
            temp.push_back(new QQuickItem());
        }
        gameItem.push_back(temp);
    }
}

void LogicScene::nextFrameHero()
{
    //увеличваем счетчик кадров
    countTimerHero++;
    //определяем позицию кадра по оси y
    hero->setCurrentFrame_y(sizeItem*currentDirHero); //!!!Потом возможно передавать лишь направление, так как перс знает размер
    //определяем сторону анимации влево или вправо по спрайту
    int tempFrame_x = hero->getCurrentFrame_x();
    if (tempFrame_x == 0)
    {
        moveRightHero = true;
    }
    if (tempFrame_x == (sizeItem*2))
    {
        moveRightHero = false;
    }
    if (moveRightHero)
    {
        //смещаем вправо на кадр
        hero->setCurrentFrame_x(tempFrame_x+sizeItem);
    }
    else
    {
        //смещаем влево на кадр
        hero->setCurrentFrame_x(tempFrame_x-sizeItem);
    }
    //само смещение на сцене
    if (currentDirHero==0)
    {
        int tempPos_y = hero->getCurrentPos_y();
        hero->setCurrentPos_y(tempPos_y+sizeItem/8);
    }
    else if (currentDirHero==1)
    {
        int tempPos_x = hero->getCurrentPos_x();
        hero->setCurrentPos_x(tempPos_x-sizeItem/8);
    }
    else if (currentDirHero==2)
    {
        int tempPos_x = hero->getCurrentPos_x();
        hero->setCurrentPos_x(tempPos_x+sizeItem/8);
    }
    else
    {
        int tempPos_y = hero->getCurrentPos_y();
        hero->setCurrentPos_y(tempPos_y-sizeItem/8);
    }
    hero->update();

}

QSGNode *LogicScene::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData)
{
        //этот параметр не используем
        Q_UNUSED(updatePaintNodeData)

        QSGSimpleTextureNode *node = static_cast<QSGSimpleTextureNode *>(oldNode);
        //если нода не существует
        if (!node) {
         node = new QSGSimpleTextureNode();
         QImage img(backgroundPuth);
         QSGTexture *texture = window()->createTextureFromImage(img);
         node->setTexture(texture);
        }


        node->setRect(boundingRect());


        return node;

}

void LogicScene::keyPressEvent(QKeyEvent *event)
{
    if ((event->isAutoRepeat()))
        {
            return;
        }
    switch (event->key())
    {
        case Qt::Key_Down:
        {

            if (countTimerHero ==0) //чтоб не было ложных срабатываний при частых нажатиях
            {
                currentDirHero = 0;
                moveRightHero = true;

                timerHero->start(50);
            }

            break;
        }
        case Qt::Key_Up:
        {

            if (countTimerHero ==0) //чтоб не было ложных срабатываний при частых нажатиях
            {
                currentDirHero = 3;
                moveRightHero = true;

                timerHero->start(50);
            }
            break;
        }
        case Qt::Key_Left:
        {
            if (countTimerHero ==0) //чтоб не было ложных срабатываний при частых нажатиях
            {
                currentDirHero = 1;
                moveRightHero = true;

                timerHero->start(50);
            }
            break;
        }
        case Qt::Key_Right:
        {
            if (countTimerHero ==0) //чтоб не было ложных срабатываний при частых нажатиях
            {
                currentDirHero = 2;
                moveRightHero = true;

                timerHero->start(50);
            }
            break;
        }
    }
    QQuickItem::keyPressEvent(event);
}

void LogicScene::keyReleaseEvent(QKeyEvent *event)
{

    if ((event->isAutoRepeat()))
        {
            return;
        }

    switch (event->key())
    {
        case Qt::Key_Down:
        case Qt::Key_Up:
        case Qt::Key_Left:
        case Qt::Key_Right:
        {

            timerHero->stop();
            countTimerHero = 0;
            break;
        }


    }
    QQuickItem::keyReleaseEvent(event);
}

hero.h:

#ifndef HERO_H
#define HERO_H

#include <QQuickItem>
#include <QSGSimpleTextureNode>
#include <QSGTexture>
#include <QQuickWindow>
#include <QTimer>

class Hero : public QQuickItem
{
    Q_OBJECT
public:
    Hero(int pos_x, int pos_y, int sizeItem);
    void animationMove(int direction, int step);

    int getCurrentPos_x() const;
    void setCurrentPos_x(int value);

    int getCurrentPos_y() const;
    void setCurrentPos_y(int value);

    void setCurrentFrame_x(int value);

    void setCurrentFrame_y(int value);

    int getCurrentFrame_x() const;

    int getCurrentFrame_y() const;

protected:
    virtual QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *updatePaintNodeData) override;

signals:

public slots:

private:
    QString imgPuth;
    int currentPos_x; //текущая позиция х - на сцене
    int currentPos_y; //текущая позиция у - на сцене

    int currentFrame_x; // текущий кадр по х
    int currentFrame_y; // текущий кадр по у
    int size = 0;



};

#endif // HERO_H

hero.cpp:

#include "hero.h"

Hero::Hero(int pos_x, int pos_y, int sizeItem)
{
    setFlag(QQuickItem::ItemHasContents);
    imgPuth = ":/gameboxes/people2.png";
    currentPos_x = pos_x;
    currentPos_y = pos_y;
    size = sizeItem;
    currentFrame_x = size * 1;
    currentFrame_y = size * 0;

}

QSGNode *Hero::updatePaintNode(QSGNode *oldNode, QQuickItem::UpdatePaintNodeData *updatePaintNodeData)
{
    Q_UNUSED(updatePaintNodeData)

    QSGSimpleTextureNode *node = static_cast<QSGSimpleTextureNode *>(oldNode);
    //если нода не существует
    if (!node) {
     node = new QSGSimpleTextureNode();
     QImage img(imgPuth);
     QSGTexture *texture = window()->createTextureFromImage(img);
     //node->setSourceRect(96,0,96,96); //показывает часть текстуры
     node->setSourceRect(currentFrame_x,currentFrame_y,size,size);
     node->setTexture(texture);

    }
    else
    {
        node->setSourceRect(currentFrame_x,currentFrame_y,size,size);
    }

    //
    //node->setRect(0,96,96,96); // размер области
    node->setRect(currentPos_x,currentPos_y,size,size);
    return node;
}

int Hero::getCurrentFrame_y() const
{
    return currentFrame_y;
}

int Hero::getCurrentFrame_x() const
{
    return currentFrame_x;
}

void Hero::setCurrentFrame_y(int value)
{
    currentFrame_y = value;
}

void Hero::setCurrentFrame_x(int value)
{
    currentFrame_x = value;
}

int Hero::getCurrentPos_y() const
{
    return currentPos_y;
}

void Hero::setCurrentPos_y(int value)
{
    currentPos_y = value;
}

int Hero::getCurrentPos_x() const
{
    return currentPos_x;
}

void Hero::setCurrentPos_x(int value)
{
    currentPos_x = value;
}

d
12 января 2019 г. 17:26
dmitry.maslov

Есть библиотека для работы с файлами DICOM(специфические медецинские изображения) - https://dicom.offis.de/dcmtk.php.en Для VS или из под Linux-a все спкокойно собирается и подключается. Не получается ее собрать и подключить в Qt Creator (компилятор MinGW) в Windows, постоянно ошибки при cmake. Если кто-то сталкивался или готов помочь, отзовитесь пожалуйста

d
2 января 2019 г. 19:16
dufus

Есть class MainWindow и class PollutionZone : public QWidget. В классе PollutionZone, есть два QDoubleSpinBox :

QDoubleSpinBox *latitudeDSpinBox = new QDoubleSpinBox(this);
virtual QDoubleSpinBox* PollutionZone::getLatitudeDSpinBox()
{
    return latitudeDSpinBox;
}
QDoubleSpinBox *longitudeDSpinBox = new QDoubleSpinBox(this);
virtual QDoubleSpinBox* PollutionZone::getLongitudeDSpinBox()
{
    return longitudeDSpinBox;
}

Почему в классе MainWindow не получается изменить значения latitudeDSpinBox, longitudeDSpinBox ?

#include "PollutionZone/pollutionzone.h"
...
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
 ...
    PollutionZone *PZone = new PollutionZone();
    PZone->getLatitudeDSpinBox()->setValue(1.111111);
    PZone->getLongitudeDSpinBox()->setValue(2.222222);
    delete PZone;
 ...
}

Не получается изменить значения - это значит, остаются координаты равными : 0.000000, 0.000000

2 января 2019 г. 12:06
Михаиллл

Здравствуйте. Как QSqlTableModel перевести в QString или распечатать?

2 января 2019 г. 10:07
Михаиллл

Здравствуйте. Делаю запрос в базу данных:

    QSqlQuery query;
    query.prepare("SELECT "
                  "\"NumberID\" ,"
                  "\"Name\" ,"
                  "\"Comments\" ,"
                  "\"Resume\""
              " FROM " + NameTableDB +
             " WHERE \"NumberID\" = 52" 
              ";");

    if (!query.exec()) {qDebug()<<"не получило данные";}
    else
    {
        qDebug()<<"получило данные";
        int IdResume = query.value(0).toInt();
        QString NameResume = query.value(1).toString();
        QString ComentResume = query.value(2).toString();
        QString Resume = query.value(3).toString();
        qDebug()<<"Id"<<IdResume;
        qDebug()<<"Name"<<NameResume;
        qDebug()<<"coment"<<ComentResume;
        qDebug()<<"resume"<<Resume;
    }

дебаг выдает: получило данные QSqlQuery::value: not positioned on a valid record QSqlQuery::value: not positioned on a valid record QSqlQuery::value: not positioned on a valid record QSqlQuery::value: not positioned on a valid record Id 0 Name "" coment "" resume "" Скажите пожалуйста, как мне получить эти данные?

1 января 2019 г. 17:25
Михаиллл

Здравствуйте. Скажите пожалуйста, как изменть шрифт и его размер при печати. Пробовал так, не работает:

void MainWindow::PrintDocument(QString &TextForPrint) //PrintDocument
{
    QPrinter MyPrinter;
    QPrintDialog *PrinterDialog = new QPrintDialog(&MyPrinter);
    PrinterDialog->setWindowTitle("Печать");
    QFont FontForPrint;
    FontForPrint.setPointSize(22);
    //PrinterDialog->setFont(FontForPrint);
    if (PrinterDialog->exec())
    {
        QPainter MyPainter;
        MyPainter.begin(&MyPrinter);
        MyPainter.drawText(100, 100, 400, 400, Qt::AlignLeft|Qt::AlignTop, TextForPrint);
        MyPainter.setFont(FontForPrint);
        MyPainter.end();
    }
}
1 января 2019 г. 12:50
Михаиллл

Здравствуйте. Как распечатать QString? Этот код только показыват окно распечатывания.

    QString TestString = "Test 1";
    QPrinter MyPrinter;
    QPrintDialog *PrinterDialog = new QPrintDialog(&MyPrinter);
    PrinterDialog->exec();
МБ
21 апреля 2019 г. 9:40
Моисей Бушуев

Qt - Тест 001. Сигналы и слоты

  • Результат:0баллов,
  • Очки рейтинга-10
AA
17 апреля 2019 г. 19:40
Anton Ablin

Qt - Тест 001. Сигналы и слоты

  • Результат:73баллов,
  • Очки рейтинга1
E
17 апреля 2019 г. 18:16
Evgeny

Qt - Тест 001. Сигналы и слоты

  • Результат:100баллов,
  • Очки рейтинга10
Последние комментарии
21 апреля 2019 г. 16:22
Евгений Легоцкой

Через метод setIcon table.horizontalHeaderItem(0).setIcon("qrc://path/to/icon.png")
21 апреля 2019 г. 15:48
Евгений Легоцкой

Добрый день! Спасибо за комментарий. Там действительно лучше будет сделать с инициализацией по умолчанию.
U
18 апреля 2019 г. 15:37
Unreal_man

А как иконку в хедер задать?
u
18 апреля 2019 г. 2:15
uaa

доброго времени,большое спасибо за пример для начинающего)при адаптации к своему проекту столкнулся с таким ньансом:в vepolyline.h в 47 строке нужна инициализация по умолчанию: int m_pointF...
E
11 апреля 2019 г. 12:49
Evgeny

Спасибо за ответ) У меня компоновщик на нее ругался просто. Оказалось, просто забыл Q_OBJECT в начале класса указать.
Сейчас обсуждают на форуме
23 апреля 2019 г. 18:39
BlinCT

Вопрос закрыт) проблема найдена
21 апреля 2019 г. 16:16
Евгений Легоцкой

Приветствую Нужно сохранять где-то выбранное значение, а потом восстанавливать его. Или использовать QSettings или добавить метод open(), в который передавать начальные значения для того...
R
19 апреля 2019 г. 9:55
RED_Spider

мені важко це зараз навіть перевірити, тому що знайшов коміт, це ще було в 2016 році, і цей код не буде працювати коректно зараз, єдине скажу що це були QThread
i
17 апреля 2019 г. 15:03
ilya.guzikov

BlinCT, на стороне ++ это делать необходимо так как в qml при использовании функции append происходит перерисовка всех точек лини(как я понимаю) и из-за этого при использовании больших массиво...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы