使用“connect()”时出现问题在 qt4 的迭代中,使用 clicked() 信号并使用来自相应槽迭代的信息

发布于 2024-11-05 09:27:16 字数 552 浏览 4 评论 0原文

为此,我使用 qt4 用 c++ 编程来设计我的界面。

在这个程序中,我创建了一个小部件,它根据用户输入生成一个(未知)数量的 QPushButtons,因此我动态地创建它们。在创建时,我想将这些按钮连接到一个函数,该函数需要创建按钮的迭代中存在的参数(例如,指示 a 向量中的位置的 int),但我不能这样做由于信号/槽的性质以及来自 QPushButtons 的 clicked() 信号的性质(它不接受参数)。

代码看起来有点像这样:

vector<int> myVector

for(int i=0; i<user_input_number; i++){

    ...
    QPushButton *testingb4 = new QPushButton("Execute", this);
    connect( testingb4, SIGNAL( clicked() ), this, SLOT( customSlot() ) );
    ...

}

“customSlot”需要“i”来确定我应该访问向量的哪个元素。我该如何解决这个问题?

For this, I'm programming in c++ using qt4 to design my interface.

In this program, I create a widget which spawns a (unknown) number QPushButtons depending on user input, thus I am creating them dynamically. At the moment of creation, I want to connect these buttons to a function that would need parameters that exist within the iteration of creating the buttons (for example, an int that would indicate a position in the a vector), yet I cannot do this due to the nature of signals/slots and the nature of the clicked() signal from the QPushButtons (it does not accept parameters).

The code looks somewhat like this:

vector<int> myVector

for(int i=0; i<user_input_number; i++){

    ...
    QPushButton *testingb4 = new QPushButton("Execute", this);
    connect( testingb4, SIGNAL( clicked() ), this, SLOT( customSlot() ) );
    ...

}

"customSlot" would need "i" to determine what element of my vector I should access. How do I get solve this problem?

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

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

发布评论

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

评论(1

清醇 2024-11-12 09:27:16

您似乎正在寻找 QSignalMapper。这可以帮助您识别点击信号的来源。

It seems you are looking for QSignalMapper. This may help you identify the source of click signals.

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