当动态创建按钮,每一个创建的按钮都与同一个槽函数绑定,点击按钮的时候获取被点击的按钮的文本。
代码如下:
QString getClickedBtn()
{outPut<<"getClickedBtn()";QString strText = " ";for(int i = 0; i < m_listBtn.size(); ++i){QPushButton *btn = m_listBtn[i];if(btn->hasFocus()){strText = btn->text();break;}}if(strText != " "){return strText;}outPut<<"end";QPushButton *btn = m_listBtn[0];if(btn != NULL){outPut<<"btn";return strText = m_listBtn[0]->text();}outPut<<"btn == NULL";
}
将动态创建的按钮存入m_listBtn中,m_listBtn是一个存放QPushButton*的list类型,通过遍历列表,判断焦点是否在哪一个按钮上,从而获得被点击的按钮的文本,如果按钮上没有焦点,则设置默认的文本。存在弊端,当点击完按钮之后再去点击了其它的按钮,则会出错,故适用类型受限,还需要结果一个记录此次点击后结果的参数。
QString strText = getClickedBtn();
m_currentBtnText = strText;//记录当前点击的按钮文本
if(m_lastBtnText == strText)
{return ;
}
m_lastBtnText = strText;
具体的应用还需参照应用场景做相应调整。