操纵信号和qt 中命令行输入的插槽

发布于 2024-10-28 04:33:21 字数 615 浏览 4 评论 0原文

我正在开发一个关于手机的简单主菜单界面的项目。目前我正在研究 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) ) );

}

I am working on a project about a simple main menu interface for a mobile phone. Currently I am working on C++. I want to manipulate signals from the inputs I've typed from command line input. For example when I type "1" and press enter, I want the program to take it as a signal and do the slot operation. Here is the corresponding piece of my code:

    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) ) );

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吃素的狼 2024-11-04 04:33:22

我假设您已经生成了从命令行界面 (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)< /code> 直接。

I assume you have already produced the code to read the users input from the command line interface (CLI). Something like:

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

And have a function to parse the user input

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

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

}

Now you only have to call your function setContactsSelected(int) passing as parameter the user's input or emit the signal void contactsSelected(int) directly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文