Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1408690
  • 博文数量: 120
  • 博客积分: 182
  • 博客等级: 入伍新兵
  • 技术积分: 2278
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-19 16:31
文章分类

全部博文(120)

文章存档

2015年(12)

2014年(13)

2013年(40)

2012年(55)

分类: C/C++

2013-10-29 22:19:45

分割窗口QSplitter类在应用程序中常常可能用到,它可以灵活地设置窗口的布局。通过一个小实例体先会一下QSplitter的使用。
     -------创建工程时,Base Class选择“QMainWindow”

点击(此处)折叠或打开

  1. //main.cpp
  2. #include "splitter.h"
  3. #include <QApplication>
  4. #include <QSplitter>
  5. #include <QTextCodec>
  6. #include <QTextEdit>

  7. int main(int argc, char *argv[])
  8. {
  9.     QApplication a(argc, argv);

  10.     //指定显示字体
  11.     QFont font("helianthus_lu", 12);
  12.     a.setFont(font);

  13.     //codecForLocale()函数来返回现在系统的默认编码,显示中文
  14.     QTextCodec::setCodecForTr(QTextCodec::codecForLocale());

  15.     //主分割窗口
  16.     //新建一个QSplitter类对象, 作为主分割窗口,并设定此分割窗口为水平分割窗口
  17.     //QSplitter的第一个参数通过Qt::Horizontal 和 Qt::Vertical来设定为水平分割或垂直分割。
  18.     //第二个设定0代表是主窗口,无父窗口
  19.     QSplitter *splitterMain = new QSplitter(Qt::Horizontal, 0);
  20.     //新建一个QTextEdit类对象,并插入主分割窗口中
  21.     //主窗口是splitterMain,子splitter被添加到splitterMain中。添加时为从左至右(或从上至下)添加
  22.     QTextEdit *textLeft = new QTextEdit(QObject::tr("Left widget"), splitterMain);
  23.     //设定TextEdit中文字的对齐方式为居中显示
  24.     textLeft->setAlignment(Qt::AlignCenter);

  25.     //右部分割窗口
  26.     //新建一个QSliptter类对象,作为右分割窗口,设定此分割窗口为垂直分割窗口,并且以splitterMain为父窗口
  27.     QSplitter *splitterRight = new QSplitter(Qt::Vertical, splitterMain);
  28.     //设置拖动时是否实时更新:
  29.     //setOpaqueResize()用于设定分割窗的分隔条在拖动时是否为实时更新显示,若设置为true则为实时更新显示
  30.     //设置为false则是在拖动时只显示一条灰色的粗线条,在拖动到位并且弹起鼠标后再显示分割条。一般默认设置为true(实时更新)
  31.     splitterRight->setOpaqueResize(false);
  32.     QTextEdit *textup = new QTextEdit(QObject::tr("Top widget"), splitterRight);
  33.     textup->setAlignment(Qt::AlignCenter);

  34.     QTextEdit *textBottom = new QTextEdit(QObject::tr("Bottom widget"), splitterRight);
  35.     textBottom->setAlignment(Qt::AlignCenter);

  36.     //setStretchFactor()用于设定可伸缩控件,它的第一个参数指定设置的控件序号,控件序号按插入的先后顺序
  37.     //从0起依次编号;第2个参数为大于0的数表示此控件为可伸缩控件此实例中设定右部分分割窗为可伸缩控件,当整个
  38.     //对话框的宽度发生变化时(当拉伸整个窗口时候),左部的文件编辑框宽度保持不变,右部的分割窗宽度随着整个对话框大小改变进行调整
  39.     splitterMain->setStretchFactor(1, 1);

  40.     splitterMain->setWindowTitle(QObject::tr("Splitter"));
  41.     splitterMain->show();

  42. // Splitter w;
  43. // w.show();

  44.     return a.exec();
  45. }
最终效果:
          
参考自:《Qt4开发实践》
阅读(21045) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~