首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

qt 下connect 中的SIGNAL(clicked())的有关问题

2012-04-06 
qt 下connect 中的SIGNAL(clicked())的问题先看代码:connect(ui-pushButton,SIGNAL(clicked()),this,SLOT

qt 下connect 中的SIGNAL(clicked())的问题
先看代码:
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 的帮助。

探讨

把on_pushButton_clicked()改掉,on_pushButton_clicked()是Qt的默认点击事件,等于点击了两次

[解决办法]
探讨

这个说的不完全对,在 QtCreator 的工程中 都会有一句
QMetaObject::connectSlotsByName(MainWindow);
也就是说,他会根据命名规则,自动连接信号和槽。
如果你在手动连接,就是连接了两次。
这个并不是 Qt 的默认事件。
至于命名规则是什么 可以查看 QMetaObject::connectSlotsByName 的帮助。

引用 1……

[解决办法]
2L很详细。
on_pushButton_clicked() 自动连接命名规则。用Qt-creator右键点击Button后选择go to slot项后自动生成的槽的名字就是这个。

自己命名槽的时候还是回避此规则的好。

热点排行