Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пока не нажата клавиша клавиатуры 
:(
    Опции темы
Aline
Дата 25.9.2013, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Ребята, помогите плиз! Нужно соорудить цикл, который работает до тех пор, пока не нажмут кнопку на клавиатуре. А я что то найти не могу подобное в Qt, хоя наверняка же есть smile. В Борланде я бы просто написала 
Код

while not KeyPressed{
...............................
}

а здесь как?
PM MAIL   Вверх
Jeka178RUS
Дата 25.9.2013, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 3.9.2012

Репутация: нет
Всего: нет



Немного не уловил речь о GUI приложении или консольном? Потому что если о GUI то нажатие клавиши это событие и программирование там событийное,  необходимо обрабатывать keyPress и keyRelease, еще может помочь свойство isAutoRepeat
PM MAIL   Вверх
Aline
Дата 25.9.2013, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Jeka178RUS, приложение GUI. Я думаю, что обработка этих событий не совсем то, что нужно. Цикл должен работать пока не нажата клавиша. 

Вот нечто подобное надо реализовать:

Код

void MainWindow::on_pushButton_clicked()
{
if (!flCycle) emit onTransmit();
    else {
        while  ЧТО? {
            emit onTransmit();
        }
    }
}


после while надо что то поставить, чтобы цикл работал, пока не нажали на кнопку клавиатуры
PM MAIL   Вверх
Aline
Дата 25.9.2013, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Jeka178RUS, я правильно понимаю, что если я для кнопки устанавливаю Button->SetAutoRepeat(true), то должно эмулироваться постоянное нажатие кнопки с заданным интервалом? Попробовала реализовать так, но у меня только один раз попадает в процедуру почему то....

Код

#include <QtCore>
 
using namespace std;
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    tcpServer = new EchoServer;
    
    connect(tcpServer, SIGNAL(receivedBlock(QByteArray)),this, SLOT(receivedBlock(QByteArray)));
    connect(tcpServer, SIGNAL(answeredBlock(QByteArray)),this, SLOT(answeredBlock(QByteArray)));
    connect(this, SIGNAL(onTransmit()), tcpServer, SLOT(onTransmit()));
    
    connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(onSend()));
}
 
void MainWindow::on_toolBtnOpenXml_clicked()
{
    QXmlStreamReader* xml;
    QFile* xmlfile;
    QString name, str;    
 
 
    QString fileName = QFileDialog::getOpenFileName(
                this,
                tr("Выбор файла"),
                QString(),
                tr("XML files(*.xml)"));
    if (!fileName.isEmpty()){
 
        tcpServer->rec_com.clear();
        tcpServer->tr_com.clear();
 
 
        ui->lineEdit->setText(fileName);
 
        xmlfile = new QFile(fileName);
 
        if(xmlfile->open(QIODevice::ReadOnly)){
            xml = new QXmlStreamReader(xmlfile->readAll());
 
            while (!xml->atEnd() && !xml->hasError()) {
 
                QXmlStreamReader::TokenType token = xml->readNext();
 
                if (token == QXmlStreamReader::StartElement){
 
                    if (xml->name().toString() =="Receiver")
                        parseRec(xml);
                    if (xml->name().toString() =="Transmiter")
                        parseTrans(xml);
                }
            }
 
            xmlfile->close();
 
            ui->pushButton->setAutoRepeat(Loop);
            ui->pushButton->setAutoRepeatInterval(200);
        }
 
        delete xmlfile;
        delete xml;
    }
    else {
 
    }
}
 
void MainWindow::onSend()
{
    emit onTransmit();
    
}
 


Оказывается я недопоняла хэлп: оказывается надо удерживать кнопку нажатой smile В принципе, наверное такой вариант вполне устроит....

Это сообщение отредактировал(а) Aline - 25.9.2013, 15:21
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0677 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.