QIconView类clicked()信号问题的解决
2006-05-05 17:04
295 查看
假如我们想用QIconView类,并在其中放置了很多图标按钮,
我们怎么才能捕捉到鼠标点击某个图标按钮而响应一件事情呢?
这里我选择 void QIconView::clicked ( QIconViewItem * item ) [signal] 该信号来实现这个想法。
假设我们有这个类:
class mainForm : public QDialog
{
Q_OBJECT
public:
mainForm( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
~mainForm();
QIconView* navigateIconView;
QIconViewItem *mpfindIconViewItem;
public slots:
virtual void iconClickedSlot( QIconViewItem * );
};
构造函数为:
mainForm::mainForm( QWidget* parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
QPixmap image0( ( const char** ) image0_data );
QPixmap image1( ( const char** ) image1_data );
if ( !name )
setName( "mainForm" );
resize( 596, 480 );
setCaption( tr( "Signal Icon View" ) );
navigateIconView = new QIconView( this, "navigateIconView" );
mpfindIconViewItem = new QIconViewItem( navigateIconView, tr( "find" ), image0 );
// signals and slots connections
connect( navigateIconView, SIGNAL( clicked( QIconViewItem *) ), this, SLOT( iconClickedSlot( QIconViewItem* ) ) );
}
我们想捕捉到鼠标点击 mpfindIconViewItem 按钮图标的信号,可以像上那样连接一个信号和曹。
该曹的内容该怎么写呢?
这里我给出一个比较好的写法
void mainForm::iconClickedSlot( QIconViewItem * tempIconViewItem )
{
qDebug( "Entering into mainForm::iconClickedSlot( )" );
if( tempIconViewItem == mainForm::mpfindIconViewItem )
{
static int count = 0;
printf("This is the %dth time you clicked the mpfindIconViewItem item!/n",count++);
}
else
{
printf("You clicked other area instead of the mpfindIconViewItem !! Please try again!!/n");
}
qDebug( "Leaving out of mainForm::iconClickedSlot( )" );
}
这里说明一下,当有鼠标点击QIconView类对象的区域时,就发出clicked( QIconViewItem *)该信号,
如果鼠标点击(无论是右键还是左键)到了某一 item ,item 就为该被点击到的 QIconViewItem 类图标,否则为空。
该信号将QIconViewItem * 这个参数传递给iconClickedSlot这个曹。为了捕捉到我们需要的信号,
我们就在对应的SLOT函数里添加判断语句,如程序中: if( tempIconViewItem == mainForm::mpfindIconViewItem ) 这样。
相关文章推荐
- QSlider 拖动滑动条使用valueChanged(int value)信号重复调用槽函数问题解决
- 线程中解决sigpipe信号问题
- (完美解决)defy4.0更换m_s2基带无信号,刷机也无法解决的问题
- 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)
- 苹果周一出iOS升级 解决信号问题
- (四)使用Libcurl下载文件,解决无信号中断,下载中掉电恢复后断点续传问题的源代码
- 线程中解决sigpipe信号问题
- 问题解决:FFmpeg视频编解码库,无法解析的外部信号
- 用sigsetjmp和siglongjmp 解决从信号处理程序返回后信号仍被屏蔽问题
- 信号完整性问题及其解决方法
- 解决磊科随身wifi在ubuntu 14.04 下频繁掉线且信号弱的问题
- 信号槽相互关联问题解决
- QIconView类clicked()信号问题的解决
- [转载] 问题解决:FFmpeg视频编解码库,无法解析的外部信号
- 泛泰A850L清基带缓存工具,可解决莫名其妙的信号问题,只适用于泛泰A850L
- 操作系统之信号量解决同步互斥问题
- 使用状态模式解决简单的信号转换问题
- 信号槽相互关联,重复触发问题的解决
- 网络布线跨度过长导致信号延迟问题的解决方法
- Android无信号和上网问题已解决,请大家借鉴