找回密码
 立即注册
收起左侧

一个关于界面和程序的问题,很纠结,麻烦版上大大解答...

2
回复
7592
查看
[复制链接]
累计签到:8 天
连续签到:1 天
来源: 2014-4-27 16:47:46 显示全部楼层 |阅读模式
2Qter豆
由.ui文件生成的类的构造函数里都有一个setupUi(this),这个函数的作用是对界面进行初始化,也可以说,setupUi 是我们画的界面和写的程序之间的桥梁。但是在yafeilinux的书上,很多地方在调用setupUi(this)函数之后,继续用ui->对界面操作,为什么修改后的界面还能和我们程序关联上?举个例子吧,原书第85页,第五章

// 添加编辑菜单
QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)"));
// 添加打开菜单
QAction *action_Open = editMenu->addAction(QIcon(":/myImage/images/open.png"),tr("打开文件(&O)"));
// 设置快捷键
action_Open->setShortcut(QKeySequence("Ctrl+O"));
// 在工具栏中添加动作
ui->mainToolBar->addAction(action_Open);

这几行代码都是在setupUi(this)函数调用之后,对菜单栏添加菜单,为什么界面还能和程序关联上?
另外,将上面代码中的ui指针换成this指针为什么不行啊?(因为调用setupUi函数之后,界面和程序关联上了,那么当前创建的对象也有菜单栏,那么就可以用this->menuBar,可是事实上却不可以,不知道为什么?

跪求解答!

最佳答案

查看完整内容

因为那些对象属于ui的,所以是ui->*** ui属于this,你可以用this->ui->***这样用
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2014-4-27 16:47:47 显示全部楼层
因为那些对象属于ui的,所以是ui->***
ui属于this,你可以用this->ui->***这样用
回复

使用道具 举报

累计签到:7 天
连续签到:1 天
2014-4-28 09:59:02 显示全部楼层
因为都在构造函数里,虽然setupUi(this)函数调用之后加的,但是构造函数还没结束。构造函数也可以看出是初始化的过程吧。要是那几行没在构造函数里,或者构造函数里没有调用,应该就不起作用了。
----个人理解,仅供参考。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了