Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] QT Creator, нажатие клавиши Ентер? QT Creator, OnKeyPress 
:(
    Опции темы
XPyCT
Дата 28.7.2009, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот решил перейти  с винды на линукс и соответсвенно с борланда С++ на QT Creator!
Покопавшись в нете нашел как в GUI интерфейсе реализовать Hello world!
А именно  вводим в поле lineEдит текст HelloWorld и при нажатии на кнопку этот текст передается в  В label.
Далее я решил проверить что там еще есть и сделал lineEдит->Clear(); и lineEдит->SetFocus();

и вот суть захотелось мне отработать событие как в борланде OnKeyPress  чтоб все выше описанное срабатывало при нажатии на клавишу  Ентер
вот тут и прекратился полет моей мысли )))! 

Прошу помощи у знающих людей прошу оъяснить на конкретном примере (выше описанном), как реализовать нажатие клавиши ентер в QT Creator!
в поиске был искал по Key(), KeyPress по разным модификациям все по нулям!
 за ранее спс с ув ХРуСТ 

Это сообщение отредактировал(а) XPyCT - 28.7.2009, 08:35
PM MAIL Skype   Вверх
SABROG
Дата 28.7.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Так

Код

void MainWindow::on_mylineeditname_returnPressed()
{
    ...
}


Должен автоматически вызваться, при приходе сигнала returnPressed от mylineeditname.

Или пиши свой слот и соединяй его с одним из сигналов QLineEdit'a

void editingFinished ()
void returnPressed ()

Это сообщение отредактировал(а) SABROG - 28.7.2009, 08:52


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
XPyCT
Дата 28.7.2009, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не ясно мне! Что и когда должно вызыватся

это обьявить в типо к примеру  My.h файле 
 
Код

void   on_mylineeditname_returnPressed();


а потом в My.Cpp 
Код

void MainWindow::on_mylineeditname_returnPressed()
{
    ...
}

]
правильно?
PM MAIL Skype   Вверх
SABROG
Дата 28.7.2009, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Да. Смотри примеры, там много интересного.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Cheloveck
Дата 28.7.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



XPyCT, ты смотришь на Qt Creator как на билдер. А это не правильно. Qt Creator не делает того, что делает билдер. Это абсолютно разные IDE. Почитай доки по Qt. Относительно сигналов и слотов, как минимум...


--------------------
user posted image
PM Jabber   Вверх
SABROG
Дата 28.7.2009, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Только это надо объявлять в секции public slots:

Код

void   on_mylineeditname_returnPressed();



--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 28.7.2009, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



А почему паблик?!


--------------------
PM MAIL ICQ Skype   Вверх
SABROG
Дата 28.7.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Цитата(Любитель @ 28.7.2009,  12:50)
А почему паблик?!

Ну может захочет подконнектить с другого класса этот слот.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Любитель
Дата 28.7.2009, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

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



Ну эт понятно. Просто в данном случае необходимости в паблике нету. А при прочих равных у прайвата приоритет, конечно. Лично я считаю, что вообще автоконнект надо использовать только с прайват слотами (иначе имена всё-таки.. не очень смотрятся).


--------------------
PM MAIL ICQ Skype   Вверх
XPyCT
Дата 28.7.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ок спс приду домой попробую и отпишусь!
PM MAIL Skype   Вверх
XPyCT
Дата 30.7.2009, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в общем всем спс поставлення задача выпонена следующим методом!

в файле  mainwindow.h

добавил строку для кей пресс  void keyPressEvent(QKeyEvent *event);
ниже код  н файла
Код

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QtGui/QMainWindow>

namespace Ui
{
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

public slots:
   void MyButtonClickHandler();

   void keyPressEvent(QKeyEvent *event);


private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H





далее реализовал в самом  Cpp файле

Код

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::MyButtonClickHandler()
{
ui->label->setText(ui->lineEdit->text());
ui->comboBox->addItem(ui->lineEdit->text());
ui->lineEdit->clear();
ui->lineEdit->setFocus();

}

void MainWindow::keyPressEvent(QKeyEvent *event)
{
    switch(event->key()){
        case Qt::Key_Return: {
            ui->label->setText(ui->lineEdit->text());
            ui->comboBox->addItem(ui->lineEdit->text());
            ui->lineEdit->clear();
            ui->lineEdit->setFocus();
          }
            break;
      }

}




Это сообщение отредактировал(а) XPyCT - 30.7.2009, 16:26
PM MAIL Skype   Вверх
SABROG
Дата 30.7.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



Мы простых путей не ищем  smile ? У тебя этот enter будет срабатывать не только в QLineEdit, а в пределах всего главного окна.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
XPyCT
Дата 1.8.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ого! Ну так покажите как я же просил примерчик!

Это сообщение отредактировал(а) XPyCT - 1.8.2009, 09:25
PM MAIL Skype   Вверх
SABROG
Дата 1.8.2009, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

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



За 5 дней мог бы уже и примеры изучить и документацию почитать.

user posted image


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
XPyCT
Дата 1.8.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



to SABROG:
Спасибо огромное! + нажал!

ув SABROG если вам не трудно загляните сюда плз тоже мои пост

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

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

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


 




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


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

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