• 5308阅读
  • 5回复

关于QStackWidget [复制链接]

上一主题 下一主题
离线zztiny
 

只看楼主 倒序阅读 楼主  发表于: 2015-08-13
,如图中所示,我做了几个Qt设计师界面类,提升到StackWidget的页面中,现在我想通过点击page_7(也就是Query)中的按钮来跳转到Page_8,通过让按钮发射信号,然后在主界面接收关联槽的方法可以办到,但是随着页面增多,我感觉太麻烦,其它方法研究了好久也没有做成功,各位有知道还有什么方式来做吗?
离线zztiny

只看该作者 1楼 发表于: 2015-08-14
版主有空吗?我这个问题有更好的思路吗?
本帖提到的人: @XChinux
离线yanwuyue

只看该作者 2楼 发表于: 2015-08-14
统一用一个槽,带个参数,根据参数打开哪一个页面
离线zztiny

只看该作者 3楼 发表于: 2015-08-16
回 yanwuyue 的帖子
yanwuyue:统一用一个槽,带个参数,根据参数打开哪一个页面 (2015-08-14 20:05) 

现在暂时就是这样弄的,但是页面太多了,而且页面间参数互传比较频繁。
离线leonchiong

只看该作者 4楼 发表于: 2015-08-17
每一个page都继承同一个父类
父类中加一个pageindex变量,用于记录每个page的序号
点击page中按钮时, 向主界面发送信号, 信号中带pageindex

同样的, 页面间的参数在父类定义结构体, 同时connect信号槽用于传递参数
离线ysu533

只看该作者 5楼 发表于: 2015-08-22
回 zztiny 的帖子
zztiny:现在暂时就是这样弄的,但是页面太多了,而且页面间参数互传比较频繁。 (2015-08-16 20:51) 

我是这么实现的
如果你是通过一个QAction触发的(工具栏或者菜单项触发的属于这个)
定义一个 QMap<QAction *, QWidget *>   widgets;
如果是通过一个QpushButton触发的
定义一个QMap<QPushButton *, QWidget *> widgets;

增加绑定关系
widgets.insert(action1, widget1);
connect(action1, SIGNAL(triggered()/clicked()), this, SLOT(pageClicked());
widgets.insert(action2, widget2);
connect(action3, SIGNAL(triggered()/clicked()), this, SLOT(pageClicked());
widgets.insert(actionx, widgetx);
connect(actionx, SIGNAL(triggered()/clicked()), this, SLOT(pageClicked());

处理槽函数
void XX::pageClicked()
{
     QAction/QPushButton *action = (QAction/QPushButton *) (sender());
     QWidget *w = widgets.value(action);
     stackedWidget->setCurrentWidget(w);
}
快速回复
限100 字节
 
上一个 下一个