标题:多个信号连接一个槽函数,可以让信号传递多余的参数吗?
作者:纹枰老妖
日期:2021-02-03 14:30
内容:
一个应用里面有100个同类按钮,每个按钮代表不同字符串,按下某个按钮,应用输出对应字符串。我只想写一个槽函数完成这功能,关键代码如下所示:
QPushButton btn[10][10];
...
...
for(int row=0; row
#1 [lemonzll 02-03 15:58]
这个用Qt5的signal slot新语法,直接用lambda函数不是就搞定了吗?
#2 [飞翔梦幻 02-04 10:29]
QSignalMapper* m_Mapper = new QSignalMapper(this);
for (int i = 0; i < 4; i++)
{
m_pTurnPageBtn = new QPushButton();
m_pTurnPageBtn->setFixedSize(60, iHeight);
m_pTurnPageBtn->setFont(QFont("宋体", 10, QFont::Bold));
if (i == 0)
strSerInfo = tr("Home");
else if (i == 1)
strSerInfo = tr("Pre");
else if (i == 2)
strSerInfo = tr("Next");
else if (i == 3)
strSerInfo = tr("End");
m_pTurnPageBtn->setText(strSerInfo);
m_pTurnPageBtn->setToolTip(strSerInfo);
m_pTurnPageBtn->setStyleSheet("QPushButton{background:transparent;color:rgb(0,88,152)}"//
"background-color:rgba(97%,80%,9%,50%);}");
m_Mapper->setMapping(m_pTurnPageBtn, i);
m_pLeftToolBar->addWidget(m_pTurnPageBtn);
connect(m_pTurnPageBtn, SIGNAL(clicked()), m_Mapper, SLOT(map()));
..
#3 回 飞翔梦幻 的帖子 [纹枰老妖 02-14 12:34]
飞翔梦幻: QSignalMapper* m_Mapper = new QSignalMapper(this);
for (int i = 0; i < 4; i++)
{
m_pTurnPageBtn = new QPushButton();
&n .. (2021-02-04 10:29)
谢谢您朋友,学会了。
不过在上面的代码中,少了最后的一个connect,也就是需要处理信号的槽函数链接。比如我们最终处理按钮按下的槽函数名字叫slotProcess(int),那么就需要在外面加一句【connect(m_Mapper,SIGNAL(mapped()),this,SLOT(slotProcess(int)))】这样的代码。
写在这里回复您,是为了巩固一下自己的记忆,如有叨扰我很抱歉。再次致谢您!