• 7643阅读
  • 12回复

请教Qt窗口布局 [复制链接]

上一主题 下一主题
离线jingping1231
 
只看楼主 倒序阅读 楼主  发表于: 2011-10-28
关键词: 窗口显示
如何让两个停靠窗口以这样的形式布局:,点击图层窗口时,该位置显示的为图层窗口,点击创建地形窗口时,该位置显示的为创建地形窗口。谢谢。
离线wxj120bw

只看该作者 1楼 发表于: 2011-10-28
回 楼主(jingping1231) 的帖子
停靠之后窗口可以用QTabWidget来实现
离线jdwx

只看该作者 2楼 发表于: 2011-10-28
回 楼主(jingping1231) 的帖子
Qt的停靠窗口本身就能这么工作,两个DockWidget停靠在一起后自动出一个选项卡,而且选项卡还出现在下面。
打开Designer试试看
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线jingping1231
只看该作者 3楼 发表于: 2011-10-28
回 2楼(jdwx) 的帖子
我想写代码实现啊,我没装Designer,可不可以帮忙看一下他生成的代码是什么样的啊?
离线jdwx

只看该作者 4楼 发表于: 2011-10-28
回 3楼(jingping1231) 的帖子
Designer生成的代码:
附件: dock.h (3 K) 下载次数:6
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 5楼 发表于: 2011-10-28
至今没找到怎么用代码设置dockwidget成为tabbed形式……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 6楼 发表于: 2011-10-28
呼,找了好久似乎有点眉目了
设计师可能不好实现,但是找google翻文档找到了点东西

QList<QDockWidget *> QMainWindow::tabifiedDockWidgets ( QDockWidget * dockwidget ) const
Returns the dock widgets that are tabified together with dockwidget.
This function was introduced in Qt 4.5.
See also tabifyDockWidget().

void QMainWindow::tabifyDockWidget ( QDockWidget * first, QDockWidget * second )
Moves second dock widget on top of first dock widget, creating a tabbed docked area in the main window.
See also tabifiedDockWidgets().

可能setTabPosition也会用来定制dock widget吧
目前还没发现反过来将tabbed的dock widget恢复的函数……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 7楼 发表于: 2011-10-28
回 楼主(jingping1231) 的帖子
测试了一下,似乎效果跟手动拖拽还是有差别的
mainwindow显示之前调用tabifyDockWidget,会发现second的标签在first之后,second处于激活状态
而如果是手动拖拽,似乎是second在first之前,处于激活状态

如果是在mainwindow显示之后调用(我的测试代码中dock的添加也是在显示之后的),调用后的效果似乎更类似于手动拖拽

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QMainWindow w;
    QDockWidget *dw1 = new QDockWidget("1", &w);
    QDockWidget *dw2 = new QDockWidget("2", &w);
    w.addDockWidget(Qt::LeftDockWidgetArea, dw1);
    w.addDockWidget(Qt::LeftDockWidgetArea, dw2);
    w.tabifyDockWidget(dw1, dw2);
    w.show();
    return a.exec();
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 8楼 发表于: 2011-10-29
其实不管如何,QMainWindow能记住QtoolBar,QDockWidget的位置,下次打开程序QtoolBar,QDockWidge还在上次关闭窗口时的位置。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 9楼 发表于: 2011-10-30
回 8楼(jdwx) 的帖子
我记得如果想记住的话要用saveState()的,然后再手动恢复
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线wjh13hao

只看该作者 10楼 发表于: 2011-10-31
QMainWindow 是如何关联 QtabBar 和 QDockWidget的联系的? 我想让QMainWindow 在tabifyDockWidget 两个dockwidget 时候,调用我自定义的QtabBar 作为标签页,怎么办?
离线jingping1231
只看该作者 11楼 发表于: 2011-11-01
回 10楼(wjh13hao) 的帖子
不是自动生成标签页了吗,为什么还要调用自定义的呢?
离线wjh13hao

只看该作者 12楼 发表于: 2011-11-01
回 11楼(jingping1231) 的帖子
我想在标签里 加 图片,qmainwindow 需要 改变 dockwidget里的状态,同时还要改变 相应标签页上得图片,如果不自定义,我怎么定位到 dockwidget 相应的标签页上? qmainwindow 有没有提供通过dockwidget得到相应标签页的 接口呢?
快速回复
限100 字节
 
上一个 下一个