• 8908阅读
  • 9回复

[提问]QT界面跳转 [复制链接]

上一主题 下一主题
离线zegler001
 

只看楼主 倒序阅读 楼主  发表于: 2012-07-08
— 本帖被 yfx2003 从 《C++ GUI Qt 4编程》(第2版)专栏 移动到本区(2012-07-12) —
我是新手,最近研究QT的界面跳转的方法,在网上下载了一个项目,如附件,项目实现的是功能是主界面和子界面的互相跳转,但是运行后点击主界面上的按钮不能进入子界面,把main函数改成从子界面进去后能跳回主界面,感觉很奇怪,仔细看代码找不出什么区别。调试代码发现槽函数执行了两次,项目里面能看到我加的调试代码,我怀疑是鼠标的单击变成了双击,但后来确定不是。哪位高手帮我分析下,不胜感谢!
附件: my_project.rar (4082 K) 下载次数:50
离线alexltr

只看该作者 1楼 发表于: 2012-07-08
可以实现。代码修改如下:

start.cpp
  1. #include "start.h"
  2. #include "ui_start.h"
  3. #include "overview_panel.h"
  4. #include <QDebug>
  5. start::start(QWidget *parent) :
  6. QMainWindow(parent),
  7. ui(new Ui::start)
  8. {
  9. ui->setupUi(this);
  10. qDebug() << "enter connect";
  11. connect(ui->toolButton_overview,SIGNAL(toggled()),this,SLOT(on_toolButton_overview_clicked()));
  12. qDebug() << "out connect";
  13. }
  14. start::~start()
  15. {
  16. delete ui;
  17. }
  18. void start::on_toolButton_overview_clicked()
  19. {
  20. qDebug() << "enterEvent";
  21. overview_panel *m_overview = new overview_panel(this);
  22. m_overview->show();
  23. qDebug() << "outEvent";
  24. this->hide();
  25. }


overview_panel.cpp

  1. #include "overview_panel.h"
  2. #include "ui_overview_panel.h"
  3. #include "start.h"
  4. overview_panel::overview_panel(QWidget *parent) :
  5. QMainWindow(parent),
  6. ui(new Ui::overview_panel)
  7. {
  8. ui->setupUi(this);
  9. connect(ui->toolButton_2,SIGNAL(clicked()),this,SLOT(on_toolButton_2_clicked()));
  10. }
  11. overview_panel::~overview_panel()
  12. {
  13. delete ui;
  14. }
  15. void overview_panel::on_toolButton_2_clicked()
  16. {
  17. this->parentWidget()->show();
  18. this->close();
  19. }



我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线zegler001

只看该作者 2楼 发表于: 2012-07-08


运行结果如图所示,还是不行啊。
离线alexltr

只看该作者 3楼 发表于: 2012-07-09
请给出完整的出错信息.

我自己测试过没有问题.
我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线alexltr

只看该作者 4楼 发表于: 2012-07-09
回 2楼(zegler001) 的帖子
Sorry. 打错代码。 信号应该是SIGNAL(toggled(bool)),
  1. start::start(QWidget *parent) :
  2. QMainWindow(parent),
  3. ui(new Ui::start)
  4. {
  5. ui->setupUi(this);
  6. qDebug() << "enter connect";
  7. connect(ui->toolButton_overview,SIGNAL(toggled(bool)),this,SLOT(on_toolButton_overview_clicked()));
  8. qDebug() << "out connect";
  9. }





我不从事IT,只是喜欢Qt。
我不是程序员,只是与程序有缘。
我写程序,只是为了让工作变得简单有序!

                      ----  一个一直在入门的编程学习者
离线bootor
只看该作者 5楼 发表于: 2012-07-09
离线zegler001

只看该作者 6楼 发表于: 2012-07-10
大哥我有话说,第一眼看上去就不对,信号和槽的参数根本就不配对。
离线zegler001

只看该作者 7楼 发表于: 2012-07-10
我说错了,信号的参数可以比槽函数多,程序能编译。

我测试过了程序正常运行,多谢前辈!
离线gongkongrs

只看该作者 8楼 发表于: 2012-07-18
这个是入门级的程序,页面多时最好把信号集中控制
离线zengzangen
只看该作者 9楼 发表于: 2012-07-23
回 7楼(zegler001) 的帖子
能把最终正确的代码发给我一份学习下吗?谢谢了!838922045@qq.com
快速回复
限100 字节
 
上一个 下一个