qt控件怎么布局

qt控件如何布局
程序中定义了两个window  
QWidget *window;
QWidget *window1
每个都调用了show的方法,这样程序运行就出现了两个窗口。

问题是,我如何将这两个window并列放入一个window中去,这样运行程序只出现一个窗口,窗口左右分别是刚刚那两个小窗口?  
------解决方案--------------------
最简单的用QGridLayout()栅格布局,包括了水平布局和垂直布局两种
如果只要在main.cpp里实现的话,很简单
关键代码

QWidget *win0=new QWidget(0);//用以展示两个部件的主窗口

QWidget *win1=new QWidget(win0);
QWidget *win2=new QWidget(win0);
//win1 win2是楼主所需要的两个部件,声明它们是以win0为主窗口的

QGridLayout *layout=new QGridLayout(win0);//使用栅格布局器,这个布局将win0分割,便于放置子部件。
layout->addWidget(win1,0,0,1,1);
layout->addWidget(win2,0,1,1,1);
//分别将两个部件放置到布局管理器中
//参数1:需要防止的部件指针
//参数2,3,4,5,该部件在第几行第几列,占用几行几列。


win0->show();

不明白的话,就给每个部件添加一些文字,再运行一下就比较容易懂了。

具体可以参考《C++ GUI QT4编程》第二版 第六章布局管理
Qt参考文档的QGridLayout一页
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:


QWidget *win1=new QWidget;
win1->resize(320,240);
win1->show();

QWidget *win2=new QWidget;
win2->resize(320,240);
win2->show();

这就是程序,这样就打开两个窗口了,怎么合并到一个窗口啊?

你这个就是没有指定父哦,
这样就可以了:
QWidget *win1=new QWidget(this);
win1->resize(320,240);
win1->show();
 
QWidget *win2=new QWidget(this);
win2->resize(320,240);
win2->show();
还有个问题,这些代码拟是在mian.cpp里面写的么?


我是在main.cpp里面写的。
按你的加上this,就会报错 invalid use of 'this' in non-member function的

main.cpp里面不能用this。
你这样吧
QWidget *win0=new QWidget;
win0.resize(640, 240);
QWidget *win1=new QWidget(win0);
win1->resize(320,240);

 
QWidget *win2=new QWidget(win0);
win2->resize(320,240);
 
QHBoxLayout * layout = new QHBoxLayout();
layout.addWidget(window );
layout.addWidget(window1 );
win0.setLayout(layout);
 
win0->show();