Russian Qt Forum

Qt => Общие вопросы => Тема начата: Noize_programmer от Январь 24, 2023, 11:04



Название: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 24, 2023, 11:04
                                                                                               решено




я пытылся сам но у меня не получилось :( :( :( :'(
помогите пожалуйста соеденить два кода
ну или хотя бы объясните ??? ??? ???

код 1 :
https://github.com/SpeechKingV/customNotePad (https://github.com/SpeechKingV/customNotePad)
код 2 :
Код:

void load_Window(QSplashScreen* psplash)
{
    QTime time;
    time.start();

    int i;
    for(i = 0; i < 10000000;);
    {
        if(time.elapsed() > 40)
        {
            time.start();
            ++i;
        }
        psplash->showMessage("Loading : "
                            + QString::number((i/1000000))+ "%",
                             Qt::AlignHCenter | Qt::AlignBottom,
                             Qt::black
                             );
        qApp->processEvents();
    }

[....]
{
    QSplashScreen splash(QPixmap(":/icon/raibow icon notepad.jpg"));

    QLabel lbl("<H1><CENTER>Costum Notepad<BR>"
               "Is ready!</Center></H1>"
               );

        splash.finish(&lbl);
        lbl.resize(250,250);
        lbl.show();
}





Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 24, 2023, 16:59
так а что не получается-то?


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: sergek от Январь 24, 2023, 22:52
так а что не получается-то?
Что не понятно? "пытылся" "соеденить" и не получилось. "Памагите!!"


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 25, 2023, 12:48
так а что не получается-то?

в каждом варианте "соеденения" которое я делал были ошибки
кроме одного но в нем откравалось два окна окно загрузки моментально перекрывалось окном Notpad


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 25, 2023, 13:59
так показывай свои варианты


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 25, 2023, 14:33
так показывай свои варианты
код который упоминается:
Код:
void load_Window(QSplashScreen* psplash)
{
    QTime time;
    time.start();

    int i;
    for(i = 0; i < 10000000;);
    {
        if(time.elapsed() > 40)
        {
            time.start();
            ++i;
        }
        psplash->showMessage("Loading : "
                            + QString::number((i/1000000))+ "%",
                             Qt::AlignHCenter | Qt::AlignBottom,
                             Qt::black
                             );
        qApp->processEvents();
    }

[....]
{
    QSplashScreen splash(QPixmap(":/icon/raibow icon notepad.jpg"));

    QLabel lbl("<H1><CENTER>Costum Notepad<BR>"
               "Is ready!</Center></H1>"
               );

        splash.finish(&lbl);
        lbl.resize(250,250);
        lbl.show();
}

вариант 1: 2 окна
код и функция в main()

вариант 2:
код в cpp (main_Notepad) и в функция в h  (main_Notepad)

вариант 3:
код и функция в cpp (main_Notepad)

вариант 4:
код смешан с кодом функции в cpp (main_Notepad)


код и функция = код из код который упоминается + функция из код который упоминается


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 26, 2023, 09:53
ты читал о QSplashScreen, как он работает? по этому огрызку кода у тебя получится, что заставка скроется мгновенно, ведь лейблу не требуется времени на инициализацию. зачем там миллионы итераций и QTime тоже не особо понятно: достаточно сделать 10 или 100 и добавить sleep для симуляции работы.

а каким ты видишь конечный результат? что должно происходить (пошагово)?


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 26, 2023, 11:19
а каким ты видишь конечный результат? что должно происходить (пошагово)?


(картинка загрузки это иконка приложения)
1 окно загрузки открывается
2 загрузка началась
3 загрузка закончена  (спустя 1 минуту(может чуть больше))
4 окнозагрузки закрылось и открылось окно Notepad
5 предусмотреные действия пользователя (использование программы по назначению)


достаточно сделать 10 или 100 и добавить sleep для симуляции работы.

спасибо а то я подзабыл как называется "sleep"


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 26, 2023, 15:31
1. в main() сначала создаем QSplashScreen
2. вызываем твою load_Window(), где происходит симуляция загрузки
3. после этого создаем main_notepad (как сейчас в коде)
4. после вызова w.show() у main_notepad добавляем splash.finish(&w), что скроет заставку и покажет главное окно программы


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 26, 2023, 16:33
1. в main() сначала создаем QSplashScreen
2. вызываем твою load_Window(), где происходит симуляция загрузки
3. после этого создаем main_notepad (как сейчас в коде)
4. после вызова w.show() у main_notepad добавляем splash.finish(&w), что скроет заставку и покажет главное окно программы

спасибо огромное только какое ставить число в sleep чтобы загрузка длилась 1 минуту?


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 26, 2023, 16:40
если надо прямо ровно минуту, то тебе надо найти «скорость» загрузки. скажем, надо пройти 100 шагов (от 0 до 100%) за минуту, значит каждый шаг надо проходить за 60/100 = 0.6 секунд (или 600 мс). т.е. надо обновлять интерфейс каждые 0.6 секунд, вот тут как раз QTime и пригодится.

также можно сделать асинхронно через таймер, который будет «тикать» каждые 0.6 секунд, чтоб время вручную не считать.


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 26, 2023, 17:05
вото так?
Код:
#include"main_notepad.h"

#include <QApplication>
#include <QThread>

void load_Window(QSplashScreen* psplash)
{

    int i;
    for(i = 0; i < 100; i++)
    {

        QThread::msleep(600);

        psplash->showMessage("Loading : "
                            + QString::number(i)+ "%",
                             Qt::AlignHCenter | Qt::AlignBottom,
                             Qt::black
                             );
        qApp->processEvents();
    }
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSplashScreen splash(QPixmap(":/icon/raibow icon notepad.jpg"));

    main_notepad w;
    w.setWindowTitle("Costom Notepad");
    w.setWindowIcon(QIcon(":/icon/raibow icon notepad.jpg"));
    w.resize(800,600);

    splash.finish(&w);

    w.show();

    return a.exec();
}
просто если сделать так то тогда загрузки невидно (просто запускается Notepad)


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: kambala от Январь 26, 2023, 17:40
потому что load_Window() нигде не вызывается :)


Название: Re: помогите пожалуйста соеденить два кода
Отправлено: Noize_programmer от Январь 27, 2023, 11:18
потому что load_Window() нигде не вызывается :)

саписибо огромное всё заработало