• 8597阅读
  • 6回复

[提问]stackedwidget槽的问题 [复制链接]

上一主题 下一主题
离线mickymin
 
只看楼主 倒序阅读 楼主  发表于: 2011-12-14
目的:用QTDESIGER画了个UI,上面放了个stackedWidget和一个Button,想通过点击Button跳转到stackedWidget的第二页。
程序实现:QObject::connect(ui.pushButton,SIGNAL(clicked())),ui.stackedWidget,SLOT(setCurrentIndex(1));
编译OK后运行报错:Object::connect: No such slot QStackedWidget::setCurrentIndex(1)
                                 Object::connect:(sender name: 'pushButton')
                                 Object::connect:(receiver name: 'stackedWidget')
环境:ubuntu QT4.5.2
疑惑:stackedwidget明明是有setCurrentIndex这个槽,怎么报没有这个槽的错误呢?
离线uidab

只看该作者 1楼 发表于: 2011-12-14
connect(ui.pushButton,SIGNAL(clicked())),ui.stackedWidget,SLOT(setCurrentIndex(1));

首先 你这句括号都不对,其次,不能写 1 , 最后,你在button的槽函数中直接设置stackedWidget 为第二页就可以。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线jdwx

只看该作者 2楼 发表于: 2011-12-14
回 楼主(mickymin) 的帖子
stackedWidget一般和QListWidget配合使用,像Qt的例子ConfigDialog
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线mickymin
只看该作者 3楼 发表于: 2011-12-14
可以了,谢谢大家。
不能直接在CONNECT中对槽函数进行参数传递吗?那如果需要传递参数怎么弄呢?
我以前用过PYQT,可以这样实现:
比如:
QtCore.QObject.connect(self.ui.button0,QtCore.SIGNAL("clicked()"),lambda next = 0: self.changepage(nex));

def changepage(self, next):
      self.ui.stackedWidget.setCurrentIndex(next)
离线roywillow

只看该作者 4楼 发表于: 2011-12-14
连接的时候是不能向槽函数传递参数的,槽函数的参数完全要由信号提供
Qt5中好像对connect的语法进行了改进,并好像也能用且lambda函数
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线xkjxkj
只看该作者 5楼 发表于: 2012-02-01
楼主是怎么解决的能把最后的槽函数放出来吗?我也遇到同样的问题啊~button点了换不了页啊
离线淳于半邪

只看该作者 6楼 发表于: 2012-02-01
回 5楼(xkjxkj) 的帖子
2楼提供的图片的例子可以解决你的问题currentItemChanged(QListWidgetItem*,QListWidgetItem*)
前者item为变化后的,后者item为变化前的;最后设置当前的为变化后的item就 O 了
快速回复
限100 字节
 
上一个 下一个