Qt показывает изображение на 1/4 секунды -- c++ поле с участием qt пол Связанный проблема

qt show an image for 1/4 of a second


-1
vote

проблема

русский

Эй, я пробовал несколько раз, чтобы завершить это, используя Uslep или Qt Sleep, когда показывает изображение, но иногда (почти каждый раз) он появляется белый вместо изображения
в основном, я хочу, чтобы он примет любой ввод Скажем, я готов CIN сделаю, то показать случайное изображение, пронумерованное 1-28 в случайном времени в диапазоне 1,5-3SECS, затем показать его для 250MILISEC, затем скрыть и ждать 2Secs Show изображение для 3SECS, затем повторить. Я на Debian, G ++;
заранее спасибо.

 <код> int getRandInt(int x){     return rand() % x; }    class I : public QThread { public:         static void sleep(unsigned long secs) {                 QThread::msleep(secs);         } };    QApplication app(argc, argv);  std::ostringstream oss; oss << "images/" << getRandInt(28) << ".jpg"; std::cout << oss.str();  QString qstr = QString::fromStdString(oss.str());  QPixmap pixmap(qstr); QPixmap pixmap2(qstr);  QSplashScreen splash(pixmap); QSplashScreen splash2(pixmap2);  QMainWindow mainWin;  while(1==1){     splash.show();     splash.showMessage(QObject::tr("test"),     Qt::AlignLeft | Qt::AlignTop, Qt::black);     app.processEvents();     I::sleep(250);     splash.finish(0);     splash.raise();        I::sleep(2*1000);     splash2.show();     splash2.showMessage(QObject::tr("test"),Qt::AlignLeft | Qt::AlignTop, Qt::black);     app.processEvents(); I::sleep(5000);splash2.finish(&mainWin);splash2.raise();  }   
Английский оригинал

Hey I have tried several times to complete this using usleep or the qt sleep when showing an image but sometimes (almost every time) it shows up white instead of the image
basically i want it to accept any input to say im ready cin will do, then show a random image numbered 1-28 in a random time ranging 1.5-3secs then show it for 250milisecs then hide and wait 2secs the show the picture for 3secs then repeat. I am on debian, g++;
thanks in advance.

int getRandInt(int x){     return rand() % x; }    class I : public QThread { public:         static void sleep(unsigned long secs) {                 QThread::msleep(secs);         } };    QApplication app(argc, argv);  std::ostringstream oss; oss << "images/" << getRandInt(28) << ".jpg"; std::cout << oss.str();  QString qstr = QString::fromStdString(oss.str());  QPixmap pixmap(qstr); QPixmap pixmap2(qstr);  QSplashScreen splash(pixmap); QSplashScreen splash2(pixmap2);  QMainWindow mainWin;  while(1==1){     splash.show();     splash.showMessage(QObject::tr("test"),     Qt::AlignLeft | Qt::AlignTop, Qt::black);     app.processEvents();     I::sleep(250);     splash.finish(0);     splash.raise();        I::sleep(2*1000);     splash2.show();     splash2.showMessage(QObject::tr("test"),Qt::AlignLeft | Qt::AlignTop, Qt::black);     app.processEvents(); I::sleep(5000);splash2.finish(&mainWin);splash2.raise();  } 
</div
     
   
   

Список ответов

0
 
vote

с пониманием того, что «показать случайное изображение, пронумерованное 1-28 в случайном времени в диапазоне 1,5-3SECS, затем показать его для 250MILISECS» означает «Показать случайное изображение пронумеровано 1-28 в случайное время от 1,75 до 3,25 «Ниже приведено это.

Код требует Qt 5.x и компилятор C ++ 11. Я пытался выделить правильное использование C ++ 11 Pseudorandom Number Hotels . Я не знаю конечного использования вашего кода, но если вы заменены <код> std::mt19937_64 для <код> random_engine , это было бы достаточно хорошо для работы психологических исследований, что и случайность ,

Показанные изображения случайно набираются из набора 28 изображений. Каждый из исходных изображений также генерируется случайным образом.

Обратите внимание на заметное отсутствие какой-либо формы сна или занятости, а также ревностное использование лямбдаса. Этот код не будет ни короче, его написали в Python. Это то, что C ++ 11 покупает вас: краткости, среди прочего:)

 <код> #include <QApplication> #include <QStateMachine> #include <QTimer> #include <QStackedWidget> #include <QPainter> #include <QLabel> #include <QPushButton> #include <random>  typedef std::default_random_engine random_engine;  QImage randomImage(int size, random_engine & rng) {    QImage img(size, size, QImage::Format_ARGB32_Premultiplied);    img.fill(Qt::white);    QPainter p(&img);    p.setRenderHint(QPainter::Antialiasing);    int N = std::uniform_int_distribution<>(25, 200)(rng);    std::uniform_real_distribution<> dP(0, size);    std::uniform_int_distribution<> dC(0, 255);    QPointF pt1(dP(rng), dP(rng));    for (int i = 0; i < N; ++i) {       QColor c(dC(rng), dC(rng), dC(rng));       p.setPen(QPen(c, 3));       QPointF pt2(dP(rng), dP(rng));       p.drawLine(pt1, pt2);       pt1 = pt2;    }    return img; }  int main(int argc, char *argv[]) {    QApplication a(argc, argv);    std::random_device rd;    random_engine gen(rd());     int imageSize = 300;    QList<QImage> images;    for (int n = 0; n < 28; ++n) images << randomImage(imageSize, gen);    std::uniform_int_distribution<> dImage(0, images.size()-1);     QStackedWidget display;    QPushButton ready("I'm Ready!");    QLabel label, labelHidden;    display.addWidget(&ready);    display.addWidget(&label);    display.addWidget(&labelHidden);     QTimer splashTimer;    QStateMachine machine;    QState s1(&machine), s2(&machine), s3(&machine), s4(&machine);    splashTimer.setSingleShot(true);     QObject::connect(&s1, &QState::entered, [&]{       display.setCurrentWidget(&ready);       ready.setDefault(true);       ready.setFocus();    });    s1.addTransition(&ready, "clicked()", &s2);     QObject::connect(&s2, &QState::entered, [&]{       label.setPixmap(QPixmap::fromImage(images.at(dImage(gen))));       display.setCurrentWidget(&label);       splashTimer.start(250 + std::uniform_int_distribution<>(1500, 3000)(gen));    });    s2.addTransition(&splashTimer, "timeout()", &s3);     QObject::connect(&s3, &QState::entered, [&]{       display.setCurrentWidget(&labelHidden);       splashTimer.start(2000);    });    s3.addTransition(&splashTimer, "timeout()", &s4);     QObject::connect(&s4, &QState::entered, [&]{       display.setCurrentWidget(&label);       splashTimer.start(3000);    });    s4.addTransition(&splashTimer, "timeout()", &s1);     machine.setInitialState(&s1);    machine.start();    display.show();     return a.exec(); }   
 

With an understanding that "show a random image numbered 1-28 in a random time ranging 1.5-3secs then show it for 250milisecs" means "show a random image numbered 1-28 in a random time between 1.75s and 3.25s", the below does it.

The code requires Qt 5.x and a C++11 compiler. I tried to highlight proper use of C++11 pseudorandom number facilities. I don't know the end-use of your code, but if you substituted std::mt19937_64 for random_engine, it'd be good enough for running psychological research as far as randomness goes.

The images shown are randomly drawn from a set of 28 images. Each of the source images are also randomly generated.

Notice the conspicuous absence of any form of sleep or busy-looping, and zealous use of lambdas. This code wouldn't be any shorter were it written in Python. That's what C++11 buys you: conciseness, among other things :)

#include <QApplication> #include <QStateMachine> #include <QTimer> #include <QStackedWidget> #include <QPainter> #include <QLabel> #include <QPushButton> #include <random>  typedef std::default_random_engine random_engine;  QImage randomImage(int size, random_engine & rng) {    QImage img(size, size, QImage::Format_ARGB32_Premultiplied);    img.fill(Qt::white);    QPainter p(&img);    p.setRenderHint(QPainter::Antialiasing);    int N = std::uniform_int_distribution<>(25, 200)(rng);    std::uniform_real_distribution<> dP(0, size);    std::uniform_int_distribution<> dC(0, 255);    QPointF pt1(dP(rng), dP(rng));    for (int i = 0; i < N; ++i) {       QColor c(dC(rng), dC(rng), dC(rng));       p.setPen(QPen(c, 3));       QPointF pt2(dP(rng), dP(rng));       p.drawLine(pt1, pt2);       pt1 = pt2;    }    return img; }  int main(int argc, char *argv[]) {    QApplication a(argc, argv);    std::random_device rd;    random_engine gen(rd());     int imageSize = 300;    QList<QImage> images;    for (int n = 0; n < 28; ++n) images << randomImage(imageSize, gen);    std::uniform_int_distribution<> dImage(0, images.size()-1);     QStackedWidget display;    QPushButton ready("I'm Ready!");    QLabel label, labelHidden;    display.addWidget(&ready);    display.addWidget(&label);    display.addWidget(&labelHidden);     QTimer splashTimer;    QStateMachine machine;    QState s1(&machine), s2(&machine), s3(&machine), s4(&machine);    splashTimer.setSingleShot(true);     QObject::connect(&s1, &QState::entered, [&]{       display.setCurrentWidget(&ready);       ready.setDefault(true);       ready.setFocus();    });    s1.addTransition(&ready, "clicked()", &s2);     QObject::connect(&s2, &QState::entered, [&]{       label.setPixmap(QPixmap::fromImage(images.at(dImage(gen))));       display.setCurrentWidget(&label);       splashTimer.start(250 + std::uniform_int_distribution<>(1500, 3000)(gen));    });    s2.addTransition(&splashTimer, "timeout()", &s3);     QObject::connect(&s3, &QState::entered, [&]{       display.setCurrentWidget(&labelHidden);       splashTimer.start(2000);    });    s3.addTransition(&splashTimer, "timeout()", &s4);     QObject::connect(&s4, &QState::entered, [&]{       display.setCurrentWidget(&label);       splashTimer.start(3000);    });    s4.addTransition(&splashTimer, "timeout()", &s1);     machine.setInitialState(&s1);    machine.start();    display.show();     return a.exec(); } 
</div
 
 

Связанный проблема

3  Отправка HTTP Post Запрос на обновление содержимого файла с использованием C ++ REST SDK Casablanca  ( Sending a http post request for updating file contents using c rest sdk casabl ) 
Я пытаюсь обновить содержимое файла на сервере Alfresco, используя C ++ SDK SDK. Я использую URL Alfresco CMIS URL для отправки запроса. Быть более конкретным...

29  C ++ Указатель на объекты  ( C pointer to objects ) 
в C ++ У вас всегда инициализировать указатель на объект с new ключевое слово? или вы просто имеете это тоже: <код> MyClass *myclass; myclass->DoSometh...

-1  C ++ с использованием класса от заголовка в классе  ( C using a class from a header within a class ) 
У меня есть немного проблемы с классами, используемыми в классах, из файлов заголовка. У меня есть время занятий во времени. Как: <код> #ifndef TIME_H #de...

1  Проблема с использованием TextureView с NDK  ( Issue using textureview with ndk ) 
Я работаю над небольшим кусочком кода, используя текстуру, чтобы отобразить результат среды MediaPlayer. Я сталкиваюсь с проблемой, пытающимся смешивать упр...

0  Как захватывать события, выпущенные из нового окна всплывающего  ( How to capture events fired from new popup ie window ) 
Приветствия! <Сильная> Ситуация: My ActiveX DLL содержит индивидуальный webbrowser. WebBrowser отображает веб-страницу. Когда пользователь нажимает на сс...

29  Добавление! Оператор и SQRT (), POW () и т. Д. Для пример примерка калькулятора  ( Adding the operator and sqrt pow etc to a calculator example applicatio ) 
Я делаю упражнения в новой книге Strustrup "Принципы программирования и практики с использованием C ++" и было интересно, если кто-нибудь на переполнении ст...

14  Классы, Rvalues ​​и Rvalue Список  ( Classes rvalues and rvalue references ) 
Lvalue - это значение, связанное с окончательной областью памяти, тогда как rvalue - это значение выражения, существование которого является временным, а не о...

1  Как работают Char и INT в C ++  ( How do char and int work in c ) 
Может быть, я собираюсь задать глупый вопрос, но я хочу подтвердить, как работает Char? Позвольте мне объяснить с примерами того, что я хочу спросить. Пусть п...

-2  Конструкторы ведут себя странным с кодом обработки исключений  ( Constructors behaving strange with exception handling code ) 
Скриншот # 1: Образец (образец & amp;) {...) // Нет ошибки без использования "const" Скриншот № 2: Destructor называется дважды, когда Copy-Constructor не вк...

145  Как определить, является ли строка номер с C ++?  ( How to determine if a string is a number with c ) 
У меня было довольно неприятностей, пытаясь написать функцию, которая проверяет, является ли строка номер. Для игры, которую я пишу, мне просто нужно проверит...

0  Использование Pybind11 на MacBook Pro  ( Using pybind11 on macbook pro ) 
Я пытаюсь использовать Pybind11 на MacBook, и я пытаюсь сделать так, как было написано в https://pybind11.readtheDocs.io/en/stable/basics.html я установил C...

3  Преобразование IPlimage в вектор в 1D в OpenCV  ( Converting iplimage into 1d vector in opencv ) 
Я хочу преобразовать MXN IPLIMAGE в вектору A (M * N) x 1 1. Может ли это сделать с любой функцией в OpenCV? Любая помощь значительно ценится. ...

1  Наличие проблемных проектов C ++ в Eclipse CDT в ОС X для глупой причины  ( Having trouble building c project in eclipse cdt in os x for a silly reason ) 
Я пытаюсь построить очень простую программу C ++ в Eclipse, и я получаю очень глупую ошибку: <код> **** Internal Builder is used for build **...

4  Строка :: Новая: что это?  ( Stringnew what is it ) 
Я из фона Java и изучает C ++. Я столкнулся с следующим C ++: <код> String source = String::New("'Hello' + ', World'"); Как то, что я так понимаю, это ...

42  Как я могу легко увидеть график C / C ++ #include? [закрыто]  ( How can i see the c c include graph easily ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыт. Этот вопрос не соответствует Рекомендациям переполнения ...




© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.