• 6291阅读
  • 4回复

[讨论]堆栈窗体的显示问题,大家来看看 [复制链接]

上一主题 下一主题
离线san123
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-13
我定义了三个按钮,想绑定到三个堆栈窗体,
    connect(ui->pushButton,SIGNAL(clicked()),ui->stackedWidget, SLOT(setCurrentWidget(ui->page)));
    connect(ui->pushButton_2,SIGNAL(clicked()),ui->stackedWidget, SLOT(setCurrentWidget(ui->page_2)));
    connect(ui->pushButton_3,SIGNAL(clicked()),ui->stackedWidget, SLOT(setCurrentWidget(ui->page_3)));
怎么老是不能显示呢,难道非要使用索引来实现吗,但按钮没有办法用索引的呢,郁闷中
离线jdwx

只看该作者 1楼 发表于: 2011-02-13
你的方法有点复杂,只要一个QListWidget把它的信号(index)和堆栈窗体的槽连起来就行,在Qt Designer里试试,不用写带码,因为我忘了是哪个信号了。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hicjiajia

只看该作者 2楼 发表于: 2011-02-14
Qt的信号-槽机制中要求他们两函数的参数必须有相同的顺序和类型,你显然这里不匹配。我觉得可以这样做:
1、定义一个公共槽,连接所有按钮的clicked信号
2、定义一个信号:void stakWidgetChange(int)
3、构造函数中连接该信号与堆栈窗体以索引为参数的槽
4、在按钮槽中通过qobject_cast<QWidgect *>sender()判断到底是哪个按钮触发的,然后emit stackWidgectChange(int)这里这个int参数你可以直接给出1、2、3、4…
(函数名可能不对,大体是这样吧)
离线san123
只看该作者 3楼 发表于: 2011-02-14
回复1楼的,我这里是用按钮pushButton来控制显示对应的窗体,所以不能使用QListWidget,QListWidget我到成功使用过!谢谢2楼的方案,看起来好像可行,我测试下
[ 此帖被san123在2011-02-14 10:40重新编辑 ]
离线free510
只看该作者 4楼 发表于: 2011-02-15
信号槽的参数必须一致,你这个写的不对。分别写三个不同的slot对应不同的qpushbutton不行吗,setCurrentWidget1,setCurrentWidget2,setCurrentWidget3,slot里边分别写setCurrentWidget(ui->page),setCurrentWidget(ui->page_2),setCurrentWidget(ui->page_3);
快速回复
限100 字节
 
上一个 下一个