उदाहरण के लिए, जब आप "Esc" दबाते हैं, तो एप्लिकेशन समाप्त होता है।क्यूटी कंसोल एप्लिकेशन में कीप्रेस घटनाओं को कैसे संभालें?
उत्तर
क्यूटी कंसोल घटनाओं को संभाल नहीं पाता है, यह केवल \n
कंसोल से छिद्रित रेखाएं पढ़ सकता है।
आपको देशी एपीआई या अन्य पुस्तकालयों (शाप) का उपयोग करने की आवश्यकता है।
यहां लिनक्स के लिए एक कामकाज है।
ConsoleReader.h
#ifndef CONSOLEREADER_H
#define CONSOLEREADER_H
#include <QThread>
class ConsoleReader : public QThread
{
Q_OBJECT
signals:
void KeyPressed(char ch);
public:
ConsoleReader();
~ConsoleReader();
void run();
};
#endif /* CONSOLEREADER_H */
ConsoleReader.cpp
#include "ConsoleReader.h"
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
static struct termios oldSettings;
static struct termios newSettings;
/* Initialize new terminal i/o settings */
void initTermios(int echo)
{
tcgetattr(0, &oldSettings); /* grab old terminal i/o settings */
newSettings = oldSettings; /* make new settings same as old settings */
newSettings.c_lflag &= ~ICANON; /* disable buffered i/o */
newSettings.c_lflag &= echo ? ECHO : ~ECHO; /* set echo mode */
tcsetattr(0, TCSANOW, &newSettings); /* use these new terminal i/o settings now */
}
/* Restore old terminal i/o settings */
void resetTermios(void)
{
tcsetattr(0, TCSANOW, &oldSettings);
}
/* Read 1 character without echo */
char getch(void)
{
return getchar();
}
ConsoleReader::ConsoleReader()
{
initTermios(0);
}
ConsoleReader::~ConsoleReader()
{
resetTermios();
}
void ConsoleReader::run()
{
forever
{
char key = getch();
emit KeyPressed(key);
}
}
: इन पदों
Capture characters from standard input without waiting for enter to be pressed https://stackoverflow.com/a/912796/2699984
मैं इसे इस तरह बनाया है का उपयोग करना
और फिर बस कुंजियां पढ़ने के लिए नया धागा शुरू:
ConsoleReader *consoleReader = new ConsoleReader();
connect (consoleReader, SIGNAL (KeyPressed(char)), this, SLOT(OnConsoleKeyPressed(char)));
consoleReader->start();
* अपडेट (जोड़ा बहाल टर्मिनल छोड़ने पर सेटिंग्स)
आप केवल 'छोड़' शायद निम्नलिखित स्निपेट में मदद मिलेगी की जरूरत है (ग + +11 और qt5 आवश्यक):
#include <iostream>
#include <future>
#include <QCoreApplication>
#include <QTimer>
int main(int argc, char *argv[])
{
QCoreApplication application(argc, argv);
bool exitFlag = false;
auto f = std::async(std::launch::async, [&exitFlag]{
std::getchar();
exitFlag = true;
});
QTimer exitTimer;
exitTimer.setInterval(500);
exitTimer.setSingleShot(false);
QObject::connect(&exitTimer,
&QTimer::timeout,
[&application,&exitFlag] {
if (exitFlag)
application.quit();
});
exitTimer.start();
std::cout << "Started! Press Enter to quit...";
int ret = application.exec();
f.wait();
return ret;
}
मदद के लिए धन्यवाद! क्या आप समझा सकते हैं कि 'exec.)' के बाद 'f.wait()' की आवश्यकता क्यों है? – spartawhy117
यह स्पष्ट सिंक्रनाइज़ेशन बिंदु है जहां async() थ्रेड सुरक्षित रूप से जुड़ता है। 'एफ' ऑब्जेक्ट std :: भविष्य में विनाशक स्पष्ट रूप से तब तक अवरुद्ध नहीं हो सकता जब तक कि ट्रेड जुड़ता है (जिसे अन्वेषण की आवश्यकता होती है) – vrogach
- 1. क्यूटी: कीप्रेस इवेंट
- 2. आईओएस पर समय घटनाओं को कैसे संभालें?
- 3. एसडीएल के साथ एक साथ कई कीप्रेस को कैसे संभालें?
- 4. उल्का में कस्टम jQuery घटनाओं को कैसे संभालें?
- 5. पुनरावर्ती घटनाओं में डीएसटी और टीजेड को कैसे संभालें?
- 6. लिनक्स सी कंसोल एप्लिकेशन
- 7. फेसबुक एप्लिकेशन अनुरोधों को कैसे संभालें?
- 8. क्यूटी "बंदर" परीक्षण - यादृच्छिक क्लिक और कीप्रेस को अनुकरण करें
- 9. क्यूटीवेबकिट: कंसोल एप्लिकेशन
- 10. Backbone.js एप्लिकेशन में हैशचेंज पर स्क्रॉल स्थिति को कैसे संभालें?
- 11. कंसोल एप्लिकेशन
- 12. कंसोल एप्लिकेशन
- 13. कंसोल एप्लिकेशन को कैसे तैनात करें
- 14. कंसोल एप्लिकेशन
- 15. : कंसोल एप्लिकेशन के गुई ऑनटॉप को कैसे बनाया जाए?
- 16. ActivityNotFoundException को कैसे संभालें?
- 17. Qt5 क्यूटी निर्माता 2.6 कंसोल
- 18. कंसोल एप्लिकेशन
- 19. कंसोल एप्लिकेशन
- 20. क्यूटी: घटनाओं को क्रम में संसाधित किया जाता है?
- 21. जीयूआई एप्लिकेशन से कंसोल एप्लिकेशन को कमांड कैसे भेजें
- 22. एप्लिकेशन। कंसोल एप्लिकेशन में वर्तमान "शून्य"
- 23. सिम्बियन कंसोल एप्लिकेशन में पावर ऑफ इवेंट्स कैसे प्राप्त करें?
- 24. मैं सी ++ में एक साधारण क्यूटी कंसोल एप्लिकेशन कैसे बना सकता हूं?
- 25. कंसोल एप्लिकेशन में विश्वसनीय टाइमर
- 26. मैं वीबीस्क्रिप्ट कंसोल एप्लिकेशन
- 27. अन्य कंसोल ऐप से कंसोल एप्लिकेशन चलाएं
- 28. सी # कंसोल एप्लिकेशन आइकन
- 29. qtebug क्यूटी कंसोल एप्लिकेशन Qt निर्माता अनुप्रयोग आउटपुट को आउटपुट करने के लिए
- 30. global.asax में सत्र अंत को कैसे संभालें?
मदद –