манипулирование сигналами и слотами из командной строки в qt - PullRequest
0 голосов
/ 30 марта 2011

Я работаю над проектом о простом интерфейсе главного меню для мобильного телефона.В настоящее время я работаю на C ++.Я хочу манипулировать сигналами от входов, которые я набрал из ввода командной строки.Например, когда я набираю «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) ) );

}

1 Ответ

0 голосов
/ 30 марта 2011

Я предполагаю, что вы уже создали код для чтения пользовательских данных из интерфейса командной строки (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) напрямую.

...