Russian Qt Forum
Ноябрь 22, 2024, 16:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt 5.6 MSVC2015 под windows XP  (Прочитано 5448 раз)
Ostapich
Гость
« : Ноябрь 17, 2017, 22:05 »

Добрый вечер товарищи!
Есть большая необходимость собрать программу под XP. Спустя больших танцев с бубнами установил Qt 5.6 с  MSVC201532. Поставил даже на всякий случай сам Visual Studio 2015 . Короче все вроде хорошо,но на виртуальной машине с Xp ругается и говорит что не Win32 программа. Точно компилирую 32  битным. Короче хз.
Второй вариант решения, установил на саму вируальную машину Qt 4.8.4 .Установил по этой инструкции: http://blog.harrix.org/article/1130
Сначала ругался на QtSerialport.
Установил его по этой инструкции )) http://microtechnics.ru/qt-ustanovka-biblioteki-qtserialport/
Потом вроде ругался на разногласия кода, исправил до :
Код:
#include "mainwindow.h"
#include <QMessageBox>
#include <QString>
#include <QDesktopWidget>
#include <QScreen>
#include <QMetaEnum>
//#include <unistd.h>
#include <errno.h>
#include "ui_mainwindow.h"
#include <QPixmap>
#include "dialog_settings.h"
#include "packet.h"
#include <qdebug.h>



MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    num_time=0;
    num_temp=0;
    flag_but_on=0;
    packet_one= {254, 232, 0, 0, 0, 0, 0, 0, 0};
    QPixmap myPixmap_on( "C:/Users/leono/Desktop/reactor2/if_Circle_Green_34211.png" );
    QPixmap myPixmap_of( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Grey_34212.png" );
    QPixmap myPixmap_red( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Red_34214.png" );

    ui->setupUi(this);

    info = new Dialog_Settings(this);//Создаем окно с настройками Com порта,
    info->setVisible(false);//                                              но не отображаем.

    ui->lcdNumber_3->display("00:00");
    ui->lcdNumber_4->display("00:00");

    ui->label_4->setPixmap(myPixmap_red);
    ui->label_3->setPixmap(myPixmap_of);

    ui->spinBox->setMaximum(250);
    ui->spinBox_2->setMaximum(500);

    connect(ui->action_Com,SIGNAL(triggered(bool)),this,SLOT(settings_menu()));
    connect(ui->action_3,SIGNAL(triggered(bool)),this,SLOT(close()));

    connect(ui->pushButton_3,SIGNAL(clicked()),this,SLOT(nasos_on()));
    connect(ui->pushButton_4,SIGNAL(clicked()),this,SLOT(nasos_of()));

    connect(ui->pushButton_5,SIGNAL(clicked(bool)),this,SLOT(on_Button_clicked()));
    connect(this,SIGNAL(on()),this,SLOT(vizvat_taimer()));
    connect(this,SIGNAL(off()),this,SLOT(taimer_stop()));

    connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(disp_lcd_time()));
    connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(disp_lcd_temp()));
    connect(info, SIGNAL(duble_send_signal(QByteArray)), this, SLOT(save_str(QByteArray)));
    connect(this,SIGNAL(sendArray(QByteArray)),info,SIGNAL(writeData(QByteArray)));

    connect(this,SIGNAL(pomp_off(packet_big)),this,SLOT(put_in_array(packet_big)));
    connect(this,SIGNAL(pomp_on(packet_big)),this,SLOT(put_in_array(packet_big)));


}

MainWindow::~MainWindow()
{
    delete ui;
    qDebug("del");
}
void MainWindow::nasos_on()
{
    QPixmap myPixmap_on( "C:/Users/leono/Desktop/reactor2/if_Circle_Green_34211.png" );
    QPixmap myPixmap_of( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Grey_34212.png" );
    ui->label_3->setPixmap(myPixmap_on);
    ui->label_4->setPixmap(myPixmap_of);


    packet_one.on_of_pomp=1;
    packet_one.test_pask();
    emit pomp_on(packet_one);
    qDebug("idx1");
}

void MainWindow::nasos_of()
{
    QPixmap myPixmap_of( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Grey_34212.png" );
    QPixmap myPixmap_red( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Red_34214.png" );
    ui->label_4->setPixmap(myPixmap_red);
    ui->label_3->setPixmap(myPixmap_of);

    packet_one.on_of_pomp=0;
    packet_one.test_pask();
    emit pomp_off(packet_one);
    qDebug("idx2");
}


void MainWindow::settings_menu()
{
    info->setVisible(true);
}


void MainWindow::disp_lcd_time()
{
    num_time=ui->spinBox_2->value();
    ui->lcdNumber_4->display(QTime::fromMSecsSinceStartOfDay(num_time*60000).toString("hh:mm"));

}

void MainWindow::disp_lcd_temp()
{
    num_temp=ui->spinBox->value();
    ui->lcdNumber->display(num_temp);
}

void MainWindow::vizvat_taimer()
{
    timer = new QTimer(this);
    updater = new QTimer(this);
    updater->setSingleShot(false);

    connect(updater,SIGNAL(timeout()), this, SLOT(disp_lcd_temp_timer()));
    timer->setSingleShot(true);
    connect(timer, &QTimer::timeout, timer, &QObject::deleteLater);
    connect(timer, &QTimer::timeout, updater, &QObject::deleteLater);
    updater->start(1000);
    timer->start(num_time*60000);
}

void MainWindow::disp_lcd_temp_timer()
{

    QString text = QTime::fromMSecsSinceStartOfDay(timer->interval() - timer->remainingTime()).toString("hh:mm");

    if (((((timer->interval() - timer->remainingTime())/1000)) % 2) != 0)
        text[2] = ' ';
    ui->lcdNumber_3->display(text);
}

void MainWindow::on_Button_clicked()
{
    if(flag_but_on==0)
    {
        flag_but_on=1;
        qDebug("flag_but_on_1");
        ui->pushButton_5->setText("СТОП");
        emit on();
    }
    else if(flag_but_on==1)
    {
        flag_but_on=0;
        qDebug("flag_but_off_2");
        ui->pushButton_5->setText("ПУСК");
        emit off();
    }
}

void MainWindow::taimer_stop()
{

    qDebug("stop");
    updater->stop();

}


void MainWindow::save_str(QByteArray data)
{
    packet_big tmp;
    unsigned char* masstmp = (unsigned char* )&tmp;
    for(unsigned int i=0; i<sizeof(tmp); i++)
    {
        masstmp[i]=(unsigned char)data[i];
    }
    if(!tmp.test_pask())
    {
        packet_one=tmp;
        qDebug()<<" ONE byte:     "<<packet_one.start_byte_one<<"\n"<<"TWO byte:     " << packet_one.start_byte_two <<"\n"<<"TEMP byte:     "<< packet_one.temp_pomp<<"\n"<<"ON-OF byte:     "<<packet_one.on_of_pomp<<"\n"<<"CRC8 byte:     "<<packet_one.CRC8<<"\n";
    }
    ui->lcdNumber_5->display(packet_one.temp_pomp);
    if(packet_one.on_of_pomp==0)
    {
        QPixmap myPixmap_on( "C:/Users/leono/Desktop/reactor2/if_Circle_Green_34211.png" );
        QPixmap myPixmap_of( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Grey_34212.png" );
        QPixmap myPixmap_red( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Red_34214.png" );
        ui->label_4->setPixmap(myPixmap_red);
        ui->label_3->setPixmap(myPixmap_of);

    }
    else if(packet_one.on_of_pomp==1)
    {
        QPixmap myPixmap_on( "C:/Users/leono/Desktop/reactor2/if_Circle_Green_34211.png" );
        QPixmap myPixmap_of( "C:/Users/leono/Desktop/reactor2/icon/if_Circle_Grey_34212.png" );
        ui->label_3->setPixmap(myPixmap_on);
        ui->label_4->setPixmap(myPixmap_of);

    }

}


void  MainWindow::put_in_array(packet_big data)
{

    QByteArray tmp;
    unsigned char* masstmp = (unsigned char* )&data;
    qDebug()<<" QQQQQQQQQQQQQQQQQQQQQ     "<<packet_one.on_of_pomp;
    for(unsigned int i=0; i<sizeof(data); i++)
    {
        tmp[i]=masstmp[i];
    }
    emit sendArray(tmp);
}


Ругается на Qtimer в основном.Методов которые есть в 5.9 нет в помине в 4.8 и это проблема, так как я не знаток.
по ссылке скрин на лог: https://yadi.sk/i/7EzrH43i3PoEG5

Оба варианта решения проблемы возможны, но ступор , я вообще новичок в этом деле, прошу о помощи! В понедельник надо программу принести на работу)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Ноябрь 18, 2017, 19:57 »

для 5.6 должно быть достаточно вписать в .pro файл
Код:
DEFINES += _USING_V110_SDK71_
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
bureau
Гость
« Ответ #2 : Январь 18, 2018, 02:10 »

для 5.6 должно быть достаточно вписать в .pro файл
Код:
DEFINES += _USING_V110_SDK71_
А для 5.10, такое возможно? Поддержку XP вродь отключили в MSVC2012...
Где-то можно более детальней прочитать (или подскажите по какому слову гуглить) в вопросе создания *.exe с возможностью запуска в WinXP
Записан
bureau
Гость
« Ответ #3 : Январь 18, 2018, 03:34 »

для 5.6 должно быть достаточно вписать в .pro файл
Код:
DEFINES += _USING_V110_SDK71_
Не прошло.
Как-то можно проверить, действительно ли при компиляции используется SDK 7.1 ?
----
А вот добавив
CFLAGS  +=  -arch:IA32
LFLAGS += /SUBSYSTEM:WINDOWS,5.01
Все заработало
« Последнее редактирование: Январь 18, 2018, 03:39 от bureau » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Январь 18, 2018, 10:09 »

Цитировать
А для 5.10

Только до Qt 5.6 включительно. т.к в Qt > 5.6 уже используются в некоторых местах
системные вызовы от Windows Vista (или 7) и выше. т.о. даже если и получится собрать
Qt > 5.6, но некоторые части просто не будут работать на Windows XP (или даже крешится).
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.