QSplitter使用总结

1. 范例

#include <QApplication>
#include <QSplitter>
#include <QTextEdit>
#include <QTextCodec>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //ont::QFont(const QString & family, int pointSize = -1, int weight = -1, bool italic = false)
    //第一个参数是字体族,第二个是字体尺寸,第三个是加粗系数,第四个是斜体设置
    QFont font("ZYSong18030",12);//指定显示字体
    a.setFont(font);

    QSplitter *splitterMain;
    QTextEdit *textleft;
    QSplitter *splitterRight;
    QTextEdit *textUp;
    QTextEdit *textBottom;
    splitterMain=new QSplitter(Qt::Horizontal,0);                   //Horizontal:水平的
    textleft=new QTextEdit(QObject::tr("Left Widget"),splitterMain);
    textleft->setAlignment(Qt::AlignCenter);
    //右部分分割窗口
    splitterRight=new QSplitter(Qt::Vertical,splitterMain);        //Vertical:垂直的
    splitterRight->setOpaqueResize(false);                                    //Opaque:不透明的
    textUp =new QTextEdit(QObject::tr("Top Widget"),splitterRight);
    textUp->setAlignment(Qt::AlignCenter);
    textBottom=new QTextEdit(QObject::tr("Bottom Widget"),splitterRight);
    textBottom->setAlignment(Qt::AlignCenter);
    splitterMain->setStretchFactor(0,1);                                      //Stretch Factor:拉伸系数
    splitterMain->setWindowTitle(QObject::tr("Splitter"));
    splitterMain->show();

    return a.exec();
}

2. 图示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aP1UEdtP-1579139796150)(leanote://file/getImage?fileId=5e1fbf0b9d720f005300000a)]

3. 代码笔记

3.1 字体设置代码

QFont::QFont(const QString & family, int pointSize = -1, int weight = -1, bool italic = false)

这是QFont对象的构造函数之一,第一个参数是字体族,第二个是字体尺寸,第三个是加粗系数,第四个是斜体设置。

3.2 设置QTextEdit控件的父对象和段落对齐方式

textleft=new QTextEdit(QObject::tr("LeftWidget"),splitterMain);
textleft->setAlignment(Qt::AlignCenter);

对于每个控件的构造函数,都会有一个默认为0的参数设置其父对象。
而QTextEdit::setAlignment函数设置其段落对齐方式。

3.3 初始化QSplitter控件的分割方向和其缩放风格

splitterRight=new QSplitter(Qt::Vertical,splitterMain);
splitterRight->setOpaqueResize(true)

QSplitter类的构造函数第一个参数表示该分割窗口是水平分割还是垂直分割,第二个参数是其父对象。
QSplitter的setOpaqueResize设置了分割窗口在缩放时的风格。

opaqueResize : bool 
This property holds whether resizing is opaque. 
The default resize behavior is style dependent (determined by the SH_Splitter_OpaqueResize style hint). 
However, you can override it by calling setOpaqueResize()

假设一个QSplitter对象中有两个窗口,当你调整中间的分割线的位置时,当该QSplitter对象的opaqueResize属性是false,

那么会出现一个虚线表示调整后的分割线的位置,反之,则什么也没有

##3.4 设置QSplitter的伸缩因子

splitterMain->setStretchFactor(1,0); 
setStretchFactor( int index, int stretch )用于设定可伸缩控件。

第一个参数指定要设置控件的序号(按插入顺序从0依次编号);第二个参数大于0时表示此控件为可伸缩控件。
在上面的实例中,splitterMain对象中,共有两个控件:一个是左边的textleft控件,另一个是右边的splitterRight对象。那么上面的这行代码就表明,在整个窗口也就是splitterMain在缩放时,splitterRight对象会保持不伸缩状态。但是当我们去缩放的时候,发现两个分割窗口都发生了伸缩。我猜测是因为所有的控件都是默认伸缩的。

这一点可以从下面的例子证明。

修改上面的代码为:

splitterMain->setStretchFactor(0,1);

意味着左边的textleft控件将是可伸缩的:

4 补充

This function is provided for convenience. It is equivalent to

QWidget *widget = splitter->widget(index);
QSizePolicy policy = widget->sizePolicy();
policy.setHorizontalStretch(stretch);
policy.setVerticalStretch(stretch);
widget->setSizePolicy(policy);
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值