先看代码:
connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(on_pushButton_clicked()));
QList<QString> collectlist;
collectlist<<"addr1"<< "addr2"<<"addr3"<<"addr4"<<"<<"addr6" ;
void MainWindow::on_pushButton_clicked()
{
int a=collectlist.size();//
QString b;
b=QString::number(a);
qDebug()<<"length ="+b;}
其中: qDebug()打印为,
"length =6"
"length =6"
有两条语句,难道是on_pushButton_clicked()执行了两次???!
SIGNAL(clicked())是触发按钮吧??
------解决方案--------------------
把on_pushButton_clicked()改掉,on_pushButton_clicked()是Qt的默认点击事件,等于点击了两次
------解决方案--------------------
这个说的不完全对,在 QtCreator 的工程中 都会有一句
QMetaObject::connectSlotsByName(MainWindow);
也就是说,他会根据命名规则,自动连接信号和槽。
如果你在手动连接,就是连接了两次。
这个并不是 Qt 的默认事件。
至于命名规则是什么 可以查看 QMetaObject::connectSlotsByName 的帮助。
------解决方案--------------------
------解决方案--------------------
2L很详细。
on_pushButton_clicked() 自动连接命名规则。用Qt-creator右键点击Button后选择go to slot项后自动生成的槽的名字就是这个。
自己命名槽的时候还是回避此规则的好。