• 5019阅读
  • 3回复

QSplitter不能占满全部空间? [复制链接]

上一主题 下一主题
离线wayne
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-09
— 本帖被 XChinux 执行加亮操作(2010-09-03) —
我写了一个小程序,发现QSplitter不能随着主窗口的大小改变而改变:
如图,水平方向的QSplitter,左边是一QTreeView,右边是一OpenGL窗口:



代码如下:
  1.     QWidget *tree3D=new QWidget(this,Qt::Window);
  2.     QWidget *leftGL=new QWidget(tree3D);
  3.   
  4.     QVBoxLayout *vbox=new QVBoxLayout(leftGL);
  5.     QLabel *msg=new QLabel("hello,world");
  6.     QDirModel *treeModel = new QDirModel();
  7.     QTreeView *tree = new QTreeView();
  8.     vbox->addWidget(msg);
  9.     tree->setModel(treeModel);
  10.     tree->setRootIndex(treeModel->index("D:"));
  11.     vbox->addWidget(tree);
  12.     QSplitter *glSplitter = new QSplitter(Qt::Horizontal,tree3D);
  13.     glSplitter->addWidget(leftGL);
  14.     glSplitter->addWidget(new Tetrahedron(tree3D));
  15.    tree3D->setWindowTitle("Tetrahedron");
  16.   // msg->setFont(QFont("Courier New", 20, QFont::Bold));
  17.    tree3D->setMinimumSize(800,500);
  18.    tree3D->show();


恳请大家找找问题,多谢了


离线rjoo
只看该作者 1楼 发表于: 2010-08-09
将QSplitter放到一个Layout里面就可以了
离线wayne

只看该作者 2楼 发表于: 2010-08-09
回 1楼(rjoo) 的帖子
谢谢,好像不行的
我早试过了,这样做的话连OpenGL窗口都不能正常显示出来
离线小精灵
只看该作者 3楼 发表于: 2010-08-14
在 tree3D->show();前加一句
setCentralWidget(glSplitter);
快速回复
限100 字节
 
上一个 下一个