• 9683阅读
  • 10回复

[提问]关于QMainWindow和QWidget的问题 [复制链接]

上一主题 下一主题
离线17611904
 
只看楼主 倒序阅读 楼主  发表于: 2011-09-01
1.是不是QMainWindow只能用setCentralWidget来设置显示widget,那么如果我想在里面放很多widget,用什么做载体比较好?

2.QWidget是不是只能用setLayout()?即只能通过一个layout来做载体?

3.QDialog和前两者,这三者间的区别是什么?
离线dbzhang800

只看该作者 1楼 发表于: 2011-09-01
1. 不是
2. 不是
3.  ... 区别?直接看QMainWindow 和QDialog的manual吧

另外:你可以关注我的blog,(应该)会提到很多大家的容易产生误解的地方

http://blog.csdn.net/dbzhang800/article/details/6737540
离线roywillow

只看该作者 2楼 发表于: 2011-09-01
1. QMainWindow可以显示很多QWidget的,但是它只能拥有一个centralWidget,你如果把很多QWidget的parent设置为这个mainWindow,应该是只能显示出来一个。如果想显示多个,可以将一个QWidget设置为centralWidget,然后其他QWidget一概放到这个里面就可以了。
2. 个人理解一个QWidget自己只拥有一个layout,但是layout可以嵌套,所以能实现更复杂的效果,不知道是不是这一点不清楚?
3. QMainWindow和QDialog派生自QWidget,正如名字一样,前者为主窗口提供了一些方便,后者为弹出对话框提供了一些方便函数,QWidget还是作为窗口组件比较好用,具体就要看文档和自己的需求了。
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线17611904
只看该作者 3楼 发表于: 2011-09-01
回 1楼(dbzhang800) 的帖子
你这回答的也太简单了、。manual上面写的是QMainWindow只能用setCentralWidget来设置的。
离线roywillow

只看该作者 4楼 发表于: 2011-09-01
回 3楼(17611904) 的帖子
不是什么简单复杂的问题哦,1#的blog中你会看到更详细的解答的
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线17611904
只看该作者 5楼 发表于: 2011-09-01
回 2楼(roywillow) 的帖子
那第一个问题按照你的说法, 那也就是说只能通过setCentralWidget来设置一个载体,那不是和我说的一样吗?
离线dbzhang800

只看该作者 6楼 发表于: 2011-09-01
Re:回 1楼(dbzhang800) 的帖子
引用第3楼17611904于2011-09-01 18:45发表的 回 1楼(dbzhang800) 的帖子 :
你这回答的也太简单了、。manual上面写的是QMainWindow只能用setCentralWidget来设置的。

呵呵,主要是这种问题我没办法回答。如果你把"只能",换成"通常",那么会容易回答很多。

你说的都是常规用法,而且99.9%以上你都该这么用,但是没人能阻止你采用其他另类用法。
离线17611904
只看该作者 7楼 发表于: 2011-09-01
回 6楼(dbzhang800) 的帖子
这是原话:
Note: Creating a main window without a central widget is not supported. You must have a central widget even if it is just a placeholder.

我学的时间很短,今天也是自己动手敲一敲,才发现很多都不会的。呵呵。
离线dbzhang800

只看该作者 8楼 发表于: 2011-09-01
Re:回 6楼(dbzhang800) 的帖子
引用第7楼17611904于2011-09-01 20:20发表的 回 6楼(dbzhang800) 的帖子 :
这是原话:
Note: Creating a main window without a central widget is not supported. You must have a central widget even if it is just a placeholder.
我学的时间很短,今天也是自己动手敲一敲,才发现很多都不会的。呵呵。


呵呵,Manual中说的没错,用Qt就应该按manual走。

但是,并不是说其他不能做:比如,你可以在QMainWindow的任何地方放置任何widget。
离线17611904
只看该作者 9楼 发表于: 2011-09-02
回 8楼(dbzhang800) 的帖子
那应该通过什么函数来放置呢?我觉得setCentralWidget是设置一个整体的框架,然后再在框架中放各种widgets.
离线dbzhang800

只看该作者 10楼 发表于: 2011-09-02
Re:回 8楼(dbzhang800) 的帖子
引用第9楼17611904于2011-09-02 12:15发表的 回 8楼(dbzhang800) 的帖子 :
那应该通过什么函数来放置呢?我觉得setCentralWidget是设置一个整体的框架,然后再在框架中放各种widgets.


不妨看看这个吧,相信对你会大有帮助
http://blog.csdn.net/dbzhang800/article/details/6744650
快速回复
限100 字节
 
上一个 下一个