当前位置:编程学习 > wap >>

在toolbox中,自动生成了好几个page按钮,在每个page按钮中,有动态生成几个checkbox,请问大家我随意选中其中的一个page中的checkbox

在toolbox中,自动生成了好几个page按钮,在每个page按钮中,有动态生成几个checkbox,请问大家我随意选中其中的一个page中的checkbox,而在这个page中的其他的checkbox都会自动选上,请教大家,用什么方法实现??谢谢! --------------------编程问答-------------------- 所有的都connect到一个槽,然后在槽内将所有的都设置为选中。

题外:要求太少,具体做法过多。以上供参考,以下供阅读:

http://www.beiww.com/doc/oss/smart-questions.html --------------------编程问答-------------------- 在toolbox中,自动生成了好几个page按钮。
在每个page按钮中,有动态生成几个checkbox。
随意选中其中的一个page中的checkbox,而在这个page中的其他的checkbox都会自动选上,
用什么方法实现??

假设QCheckBox型的page按钮有pageA、pageB、pageC......


1、怎么知道一个按钮被选中了,然后做某些操作?
由于QCheckBox都是继承了QAbstractButton类,这个QAbstractButton是按钮的虚基类。
有一个信号是 
void QAbstractButton::clicked ( bool checked = false )   [signal]

英文描述中有这么一句
If the button is checkable, checked is true if the button is checked, 
or false if the button is unchecked.
就是说按钮点击时,会发射clicked信号。假如这个按钮点下,而且被选中了,就会发射clicked(true)。

所以你可以这么写插槽函数AButtonSlot连接到pageA按钮的clicked信号上。
QObject::connect( pageA , SIGNAL( clicked(bool)) , this , SLOT( AButtonSlot()) );

void   AButtonSlot(bool  b)
{
    if( b )
    {
       ////这个按钮被选中了,要做什么呢?看你的需求
    }
}

2、多个按钮同时选中
刚才已经说了pageA的clicked信号连接到某个插槽上,实现pageA的操作。
实际上,可以连接一个信号到多个插槽。也可以连接多个信号到一个插槽。甚至,可以信号连信号。
分成两种思路吧,

N信号N插槽,就是说
pageA的clicked信号连接到AButtonSlot,pageB的clicked信号连接到BButtonSlot,pageC的clicked信号连接到CButtonSlot,
最后要把pageA的clicked信号连接到pageB的clicked信号和pageC的clicked信号,实现信号并联触发。



N信号1插槽,就是说
pageA的clicked信号连接到ButtonSlot,pageB的clicked信号连接到ButtonSlot,pageC的clicked信号连接到ButtonSlot,
void  ButtonSlot( bool   b)
{
    if(  b )
    {
     /////某个按钮被选中了,其他都要中。
          pageA.setCheck(true);
         pageB.setCheck(true);
         pageC.setCheck(true);

     } 
}
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,