управление сигналами и слотами из командной строки в qt

Я работаю над проектом простого интерфейса главного меню для мобильного телефона. В настоящее время я работаю над С++. Я хочу манипулировать сигналами с входов, которые я набрал из командной строки. Например, когда я набираю «1» и нажимаю «Ввод», я хочу, чтобы программа восприняла это как сигнал и выполнила операцию со слотом. Вот соответствующий фрагмент моего кода:

    class MainMenu : public QDialog, private Ui::MainMenu
{
        Q_OBJECT

public:
        ...
        void setContactsSelected(int);

public slots:
        ...
        void goToContacts(int);

signals:
        ...
        void contactsSelected(int);

};

void MainMenu::setContactsSelected(int a)
{
    emit contactsSelected(a);
}

MainMenu::MainMenu(QDialog *parent)
{
    ...
    QObject::connect( this, SIGNAL( contactsSelected(int) ), this, SLOT( goToContacts(int) ) );

}

person cagri    schedule 30.03.2011    source источник


Ответы (1)


Я предполагаю, что вы уже создали код для чтения пользовательского ввода из интерфейса командной строки (CLI). Что-то типа:

std::string str; 
std::getline( std::cin, str);

И есть функция для анализа пользовательского ввода

int input2int (const string &input) {
  stringstream ss(input);
  int number;

  if (!(ss >> num).fail() && (ss >> ws).eof())
  { 
      return num
  }

}

Теперь вам нужно только вызвать свою функцию setContactsSelected(int), передав в качестве параметра пользовательский ввод, или напрямую передать сигнал void contactsSelected(int).

person bruno    schedule 30.03.2011